我有一个页面,其中用户输入项目的数量,并且使用与所述项目有关的信息计算各种总计。我正在尝试显示项目总计的聚合,为了正确获取我需要的值,我正在检查以确保计算中涉及的每个元素在尝试执行任何操作之前都具有某种值。但是,当我尝试检查时,会抛出一个错误,说该方法未定义。
if(itemTotals[i].innerHTML != "" && itemMaps[i].innerHTML != "" && itemCogs[i].innerHTML != "" && itemQuantities[i].value != ""){
//Increment totals
}
itemQuantities[i].value
部分会引发错误。我尝试过使用.val()
和.attr("value")
,但都没有效果。我只是得到消息,无论我尝试什么都不是一个功能。如何在此上下文中检索每个输入字段的值?我是否不正确地检索输入字段?
数组初始化如下。
var itemQuantities = document.getElementsByClassName("inputQty");
计算中涉及的其他数组使用相同的.getElementsByClassName
方法,并且根据控制台,所有与我指定的类名相关的表单元格(它们对此方案不重要)都可以无错误地检索
答案 0 :(得分:0)
我刚刚注意到您使用“i”索引器索引变量,因此如果这些列表的长度不同,则会遇到麻烦。
只需确保这些列表是对称的并且具有相同的长度。
答案 1 :(得分:0)
.val()和.attr()是jQuery方法。它们不存在于普通的Javascript中。
你得到了这个元素:
var itemQuantities = document.getElementsByClassName("inputQty");
getElementsByClassName是' normal' javascript方法。因此,默认情况下,您不会在元素中添加jQuery。
尝试这种方式:
var itemQuantities = $('.inputQty');
然后对它们使用.val()和.attr()方法。
而不是使用索引迭代列表,你可以这样做:
itemQuantities.each(function(item) {
...
doWhateverYouWantWithEach($(item));
...
});
或
itemQuantities.each(function() {
...
doWhateverYouWantWithEachItem($(this));
...
});
答案 2 :(得分:0)
.value
属性有效。我只是没有正确检查输入是否为空。数量框中的输入用于乘以各种成本以确定某些聚合。我最后使用isNaN()
来达到预期的效果。