2015-11-04 37 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。 –

相關問題