js遇到了“诡异”的现象

这是我写的一个向数组添加元素的函数

 function addProject(whereToAdd){
    var winObj = $("#winProject");
    var yesButton = winObj.find(".yes").eq(0);

    for( var j = 0 ; j < winObj.find("input").length ; j++ ) //清除旧值
        winObj.find("input").eq(j).val("");

    winObj.slideDown(100);

    yesButton.click(function(){
        var projectName = $("#projectName").val();

        if( projectName != "" ){
            var projectMoney = $("#projectMoney").val() ? parseInt($("#projectMoney").val()) : 0; 

            var project = new Project(projectName,projectMoney);
            whereToAdd.push(project);

            winObj.slideUp(200);
        }else{
            alert("还没有填项目名啊!");
        }
    });
}

这是调用他的地方

 $("#addProject").click(function(){
        addProject(projectArr);
        print(projectArr);
    });

这是测试输出,为啥这么诡异 为啥还一次比一次多了?我期待的是一次存一个
图片说明

因为你没执行一次addProject这个函数,yesButton就会继续绑定一次click事件,叠加起来了,所以会成倍的+内容

yesButton.click(function(){事件绑定放到addProject函数外


    winObj.find(".yes").eq(0).click(function(){
        var projectName = $("#projectName").val();

        if( projectName != "" ){
            var projectMoney = $("#projectMoney").val() ? parseInt($("#projectMoney").val()) : 0; 

            var project = new Project(projectName,projectMoney);
            whereToAdd.push(project);

            winObj.slideUp(200);
        }else{
            alert("还没有填项目名啊!");
        }
    });



  function addProject(whereToAdd){
    var winObj = $("#winProject");
    var yesButton = winObj.find(".yes").eq(0);

    for( var j = 0 ; j < winObj.find("input").length ; j++ ) //清除旧值
        winObj.find("input").eq(j).val("");

    winObj.slideDown(100);

}

你看下你的projectArr是不是有啥问题

你是一次性全部添加进去还是点一次添加一个?你只push不清空,前面的数据依旧存在array里面啊,那肯定是一次比一次多啊

每一次都初始化一次就可以了,你是想存到数据库中的话,直接在print(projectArr) 这发请求就可以了,这样数据应该是你想要的。

  $("#addProject").click(function() {
    var projectArr = [];
    addProject(projectArr);
    print(projectArr);
    $.ajax({
        url: "/**",
        mothod: 'POST',
        data: JSON.stringfy(projectArr)
    });
  });

那个。。谢谢大家的热心回答!好激动,因为大家都回答的那么认真!
由于当时比较着急用,然后csdn这边好像没刷新,我还以为没提交上去呢,就找朋友问
朋友给了我一个令人惊讶的解决方案,然后,尽然出奇的奏效。
就是,把jq的click()换成原生js的onclick,结果啥问题都没有了。。
看来是我对jq理解不够,我会再认真读读各位的回复的,哇 大家真的好认真