繁体   English   中英

为什么 jQuery .val() 有效而 js .value 无效

[英]Why jQuery .val() work and js .value doesn't work

我对 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() 方法我可以获得页面上有默认值的值。

为什么它使用一种方法而不是另一种方法,反之亦然?

$(someSelector)返回一个 jQuery 对象。 val()是一个出现在 jQuery 对象上的方法,它获取第一个或设置对象包含的所有元素的值(如果选择器没有找到任何元素,则不执行任何操作)。

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 = ...;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM