我遇到了jQuery .val()方法和本机js .value的问题。我有一个功能,我在2个不同的页面使用,我的HTML代码是:
<input type="hidden" name="checkEntreeLun" value=""/>
<input type="hidden" name="checkEntreeMar" value=""/>
<input type="hidden" name="checkEntreeMer" value=""/>
<input type="hidden" name="checkEntreeJeu" value=""/>
<input type="hidden" name="checkEntreeVen" value=""/>
<input type="hidden" name="checkEntreeSam" value=""/>
<input type="hidden" name="checkEntreeDim" value=""/>
对于其他页面,这是相同的代码,除了输入中有默认值。现在在我的js函数中,我需要获取每个输入的值。所以这就是我所拥有的:
for (i=0;i<days.length;i++){
var nameEntree = "checkEntree"+days[i];
var checkEntreeMatin = $("input[name='"+nameEntree+"']").val();
//Do something with value ...
}
问题出现了,对于输入中没有默认值的页面,我可以使用document.getElementsByName("checkEntree"+days[i]).value
而不是.val()方法获取值,当我使用.val()方法时可以在有默认值的页面上获取值。
为什么它使用方法而不使用其他方法,反之亦然?
答案 0 :(得分:0)
$(someSelector)
返回一个jQuery对象。 val()
是一个出现在jQuery对象上的方法,它获取第一个或设置对象包含的所有Elements的值(如果选择器没有找到任何元素,则不执行任何操作)。
getElementsByName
返回Node List,这是一个类似于数组的对象,其中每个成员都是一个HTML元素节点。它没有value
属性,尽管每个HTML元素节点都有。
要使用getElementsByName
,您需要明确访问各个元素,例如通过循环结果。
var elements = document.getElementsByName("checkEntree"+days[i]);
for (var j = 0; j < elements.length; j++) {
elements[j].value = ...;
}