猿问

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);
    });

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

FFIVE
浏览 538回答 5
5回答

慕丝7291255

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

慕桂英4014372

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

炎炎设计

每一次都初始化一次就可以了,你是想存到数据库中的话,直接在print(projectArr) 这发请求就可以了,这样数据应该是你想要的。&nbsp;&nbsp;$("#addProject").click(function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;projectArr&nbsp;=&nbsp;[]; &nbsp;&nbsp;&nbsp;&nbsp;addProject(projectArr); &nbsp;&nbsp;&nbsp;&nbsp;print(projectArr); &nbsp;&nbsp;&nbsp;&nbsp;$.ajax({ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;"/**", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mothod:&nbsp;'POST', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;JSON.stringfy(projectArr) &nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;});

梵蒂冈之花

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

相关分类

JavaScript
我要回答