javascript - getElementsByClassName 在 for 中选择和使用

标签 javascript html

我需要确保,如果页面中的所有选择选项(具有相同的类)都有value = 1,则必须隐藏价格。我创建了这段代码:

var variazione = document.getElementsByClassName("select-addition");
var base = 0;
var lunghezza = 0;
for (var i = 0; i <= variazione.length; i++) {
  if (variazione[i].selectedIndex == "1") {
    base = base + 1;
  }
  lunghezza = lunghezza + 1;
}
if (base == lunghezza)
  document.getElementById("info-add-on").style.display = "none";
else 
  document.getElementById("info-add-on").style.display = "block";

但控制台返回:无法读取未定义的属性selectedIndex。但如果我手动指定 I 的值,它就可以工作(例如使用 variazione[1])。

最佳答案

我在这里看到的问题是在 for 中您正在迭代的循环直到 i <= length而不是做i < length 。请记住,从 0 开始索引,元素的范围为 [0, ..., n-1]。

通过使用 less-equal 不等式运算符,您的代码将始终比使用 getElementByClassName 找到的元素数量多访问一个元素。因此,您将访问不存在(未定义)变量的某些属性,从而产生错误。

关于javascript - getElementsByClassName 在 for 中选择和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60603131/

相关文章:

html - ul >li 样式并保持在一行内

javascript - 在 JavaScript 中创建对象

javascript - VueJS 将新对象推送到数组,数据不是 react 性的

javascript - JS/JQuery 隐藏元素、更改文本、显示元素

html - 背景视频图层定位有什么问题?

html - 给v-html添加CSS样式

javascript - Vue未加载数据

javascript - JavaScript 函数可以接受的参数数量是否有上限?

javascript - 同一用户问题的 XMPP 多个 session

javascript - 立即淡出音频