我有这个js ....
$("#form").submit(function(){
var answerlist = "first";
var answerlist = answerlist + "," + $("#get_answer").attr("value");
alert(answerlist);
});
我正在尝试将ID为#get_answer
的输入字段的值添加到answelist
变量....
我希望answerlist
现在= first move
//其中输入字段的值为move
,是的,结果是成功...
现在我第二次试图在answerlist
变量中添加另一个值....
值为on
我希望结果将是first move on
但是当我使用alert()
检查时,它会返回first on
我想要的是将值(字符串)增加到变量answerlist
喜欢
answerlist = "first";
answerlist = "first move";
answerlist = "first move on";
答案 0 :(得分: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语言中最重要的功能之一,您应该学习如何使用它。 This lecture可能有帮助。
请停止使用$.attr()
来处理琐碎的事情。
答案 1 :(得分:2)
使用此处的代码段,您可能永远不会超过“先移动”,因为您在第二行上设置了应答列表,并且仅在提交表单时生成。因此,除非您输入的值是“继续”,否则它将永远不会显示预期的结果。
如果需要,可以将应答列表变量放在函数作用域之外,并在输入更改时添加值...
var answerlist = "first";
$("#form #get_answer").change(function(){
answerlist = answerlist + "," + $("#get_answer").val();
});
$("#form").submit(function(){
alert(answerlist);
});
但请注意,您无法从此列表中删除任何内容。相反,如果您需要具有删除项目的潜力,您可能希望使用数组并推送/弹出值。 JavaScript Array Ref
答案 2 :(得分:1)
这应该这样做
$("#form").submit(function(){
var answerlist = "first";
var answerlist = answerlist + "," + $("#get_answer").val();
alert(answerlist);
});
修改强>
答案 3 :(得分:1)
您正在初始化函数内部变量的值,所以很自然地,当它再次被调用时,该值将返回 first
在函数外部初始化它。
答案 4 :(得分:0)
试试这个......
var answerlist = answerlist + "," + $("#get_answer").val();