0

下面代码中的 JavaScript 应该以等于变量 selected[] 的形式设置一些值(selected[i] 的可能值:true,false;)当然,之前的代码已经为所有选定的值设置了正确的值[i] 元素。

但是,控制台显示错误“productvalid: [object Object]”(而不是 true 或 false)。我是否以错误的方式读取或写入值?(我阅读并搜索了很多关于 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);
}
4

3 回答 3

5

尝试:

x = $("#productvalid"+i).val();

代替

x = $("#productvalid"+i).val(selected[i]);
于 2013-08-20T13:10:25.987 回答
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
于 2013-08-20T13:11:27.883 回答
0

正如文档将告诉您的那样,.val()(作为 getter)返回一个字符串(或数字或数组),而.val(val-to-set)(作为一个 setter)返回一个 jQuery 对象。

因此,在您的代码中,x是一个 jQuery 对象,其中包含由$("#productvalid"+i). x = $("#productvalid"+i).val()正如KhanhTO 指出的那样,您想要的是。

于 2013-08-20T13:23:06.107 回答