jQuery val是正确的功能吗?

时间:2013-08-20 13:08:11

标签: jquery

下面代码中的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);
}

3 个答案:

答案 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