下面代码中的JavaScript应该以等于所选变量[]的形式设置一些值(所选[i]的可能值:true,false;)当然,之前的代码设置了正确的值对于所有选定的[i]元素。
但是,控制台显示错误'productvalid:[object Object]'(而不是true或false)。我是以错误的方式阅读或写作价值观吗? (我阅读和google了很多关于jquery val()和相关函数,如prop()和attr(),但可以找出问题所在。我还在代码的另一部分使用val()函数来写一个值到一个有用的输入标签。)
Html代码(输入类型为rep:
<input type="hidden" id="productvalid1" name="productvalid[]" value="false" />
<input type="hidden" id="productvalid2" name="productvalid[]" value="false" />
<input type="hidden" id="productvalid3" name="productvalid[]" value="false" />
Javascript代码:
for(var i=0;i<nrofproducts;i++) {
$("#productvalid"+i).val(selected[i]);
x = $("#productvalid"+i).val(selected[i]);
console.log("productvalid: "+x);
}
答案 0 :(得分:5)
尝试:
x = $("#productvalid"+i).val();
而不是
x = $("#productvalid"+i).val(selected[i]);
答案 1 :(得分:2)
要设置值,您可以使用.val(valuehere)
;
要获取值,您只需使用.val()
(无参数)。
它出现productvalid: [object Object]
因为在设置值时,jquery返回一个对象。这将有效:
$("#productvalid"+i).val(selected[i]); //setting the value
x = $("#productvalid"+i).val(); //getting the value
console.log("productvalid: "+x); //logging on console the value, not the setting object
答案 2 :(得分:0)
正如the docs告诉你的那样,.val()
(作为一个getter)返回一个字符串(或数字或数组),而.val(val-to-set)
(作为一个setter)返回一个jQuery对象。 / p>
因此,在您的代码中,x
是一个jQuery对象,包含$("#productvalid"+i)
选择的更新DOM元素。你想要的是x = $("#productvalid"+i).val()
,KhanhTO pointed out。