Javascript 在for-in循环中使用queryselectoral
我觉得问这个问题有点愚蠢,因为它应该很简单,但我感到非常沮丧 我有几个div,我想一次只显示一个,所以我想隐藏其余的。我的做法:Javascript 在for-in循环中使用queryselectoral,javascript,dom,Javascript,Dom,我觉得问这个问题有点愚蠢,因为它应该很简单,但我感到非常沮丧 我有几个div,我想一次只显示一个,所以我想隐藏其余的。我的做法: var elements = document.querySelectorAll("div"); for (i in elements) { elements[i].style.setProperty("display", "none"); } Firefox总是说elements[i].style.setProperty()未定义。 我已经在中使用了普通
var elements = document.querySelectorAll("div");
for (i in elements) {
elements[i].style.setProperty("display", "none");
}
Firefox总是说elements[i].style.setProperty()代码>未定义。
我已经在
中使用了普通for循环而没有使用,但是我仍然想知道为什么这不起作用
提前谢谢 更换
elements[i].style.setProperty("display", "none");
与
作为HTMLElement.style
属性返回一个CSSStyleDeclaration
对象,该对象将元素的内联样式表示为属性,即style.property='value'
并在遍历具有长度的类似数组的对象(如节点列表)时使用常规for循环
var elements = document.querySelectorAll("div");
for ( var i=0; i<elements.length; i++) {
elements[i].style.display = "none";
}
var elements=document.querySelectorAll(“div”);
对于(var i=0;i
elements[i].style.setProperty("display", "none");
与
作为HTMLElement.style
属性返回一个CSSStyleDeclaration
对象,该对象将元素的内联样式表示为属性,即style.property='value'
并在遍历具有长度的类似数组的对象(如节点列表)时使用常规for循环
var elements = document.querySelectorAll("div");
for ( var i=0; i<elements.length; i++) {
elements[i].style.display = "none";
}
var elements=document.querySelectorAll(“div”);
对于(var i=0;iHuh。事实上,这就是我所做的变通方法。我认为使用方法设置样式比通过直接属性修改来设置样式更合适。确切地说,为什么我必须使用常规for循环?我知道它可以工作,但我的版本为什么不能…首先,在循环中使用for对所有可枚举属性进行排序,这在某些罕见的情况下可能会导致问题。此外,在for…in
循环中没有保证顺序,并且通常您希望按顺序迭代元素,特别是在修改这些元素时,因此最好对节点列表使用常规的for
循环,这就是为什么它们具有e一个长度,为“数组状”.Huh.事实上,这就是我所做的工作。我认为使用方法来设置样式比通过直接属性修改来设置样式更合适。确切地说,为什么我必须使用常规for循环?我知道它可以工作,但不是为什么我的版本不能…首先,使用for..in
循环迭代所有可枚举属性,这在某些罕见的情况下可能会导致问题。此外,for…in
循环中没有保证顺序,而且通常您希望按顺序迭代元素,特别是在修改这些元素时,因此最好为节点列表使用常规的for
循环,这就是它们有长度的原因,“阵列式”。