2015-11-04 38 views
1
document.getElementById("myId").style.left = 100px; 

有没有一个简短的方法来使用上面的代码的类?我可以将我对document.getElementById执行的操作应用于document.getElementsByClassName吗?

下面的代码会工作吗?

doucment.getElementsByClassName("myClass").style.left = 100px; 

我想要做的是对多个图像移动到同一个地方,它应该是灵活的,这样它会工作,如果用户希望1,2,3或多个图像移动到那个地方。

+1

带循环,是的。多个'getElements ...'方法将返回一个集合。 –

+0

为此使用jQuery。 –

+0

不幸的是,我对jQuery没有任何的了解 – aidz927

回答

2

是的,但getElementsByClassName返回类似数组的对象(HTMLCollection),所以您需要指定要应用更改的元素。例如:

document.getElementsByClassName("myClass")[0].style.left = 100px; 

将应用于具有该类的第一个元素。否则,你需要循环播放。

+0

有没有一个快捷方式让它在数组中? – aidz927

+0

我的意思是自动更改该数组中所有元素的所有样式?或者我真的必须循环它? – aidz927

+0

不,你需要以某种形式遍历集合,无论是for循环,过滤器等。 – j08691

3

getElementsByClassName()函数返回一个NodeList,因此您需要遍历它并将该样式依次应用于每个元素。使用forEach相对容易,但需要先转换为阵列:

Array.prototype.slice.call(document.getElementsByClassName("myClass")).forEach(function(elem,index) { 
    elem.style.left = 100px; 
}); 
+2

forEach不是一个nodeList对象的方法,你必须将它转换为数组。 Array.prototype.slice.call(document.getElementsByClassName(“myClass”))。forEach –

+0

等待等待我在这里迷路了,那么Array.prototype.slice .......来自上面的代码? – aidz927

+0

@GuerasArnaud你说得对,谢谢你指出。我想我在写答案的时候想到了Dojo。 –

相关问题