0

我有这个js....

$("#form").submit(function(){  
var answerlist = "first";  
var answerlist = answerlist + "," + $("#get_answer").attr("value");  
alert(answerlist);  
});

我正在尝试将带有 id 的输入字段的值添加#get_answeranswelist变量中......

我希望answerlist现在是= first move//输入字段的值在哪里move ,是的,结果是成功的......

现在我第二次尝试向answerlist变量添加另一个值....

价值是on
我希望结果是first move on

但是当我使用它检查时alert()它返回first on

有人可以帮我吗?

我想要的是将值(字符串)增加到变量answerlist

喜欢

answerlist = "first";
answerlist = "first move";
answerlist = "first move on";
4

5 回答 5

3
(function () {
    // to isolate it from rest of the code 

    var handler = function (target) {
        var list = 'first';
        return function () {
            list = list + target.value;
            alert(list);
        };
    },
    action = handler(document.getElementById('get_answer'));

    $(document.getElementById('form')).submit( action );

}());

这种结构称为“闭包”,它是 JavaScript 语言中最重要的特性之一,您应该学习如何使用它。这个讲座可能会有所帮助。

请停止使用$.attr()琐碎的事情。

于 2012-04-21T13:04:17.970 回答
2

使用您在此处的代码段,您永远不会超过“首先,移动”,因为您每次都在第 2 行设置应答列表,并且它仅在提交表单时生成。因此,除非您输入的值是“继续”,否则它永远不会显示预期的结果。

如果需要,您可以将 answerlist 变量放在函数范围之外,并在输入更改时添加值...

var answerlist = "first";  
$("#form #get_answer").change(function(){  
    answerlist = answerlist + "," + $("#get_answer").val();  
});
$("#form").submit(function(){  
    alert(answerlist);  
});

但是,请注意,您将无法从此列表中删除任何内容。相反,如果您需要有删除项目的潜力,您可能希望使用数组并推送/弹出值。JavaScript 数组引用

于 2012-04-21T12:41:59.493 回答
1

这应该这样做

$("#form").submit(function(){  
   var answerlist = "first";  
   var answerlist = answerlist + "," + $("#get_answer").val();  
   alert(answerlist);  
});

编辑:

演示

于 2012-04-21T12:34:17.363 回答
1

您正在函数内部初始化变量的值,所以很自然,当再次调用它时,该值将返回到first

在函数外初始化它。

于 2012-04-21T12:38:09.957 回答
0

尝试这个...

var answerlist = answerlist + "," + $("#get_answer").val();  
于 2012-04-21T12:34:42.380 回答