首先,對不起我的英語不好......getElementsByClassName方法 - 奇怪的行爲
我寫了一個函數來改變類元素來改變其性質。 出於某種原因,只有一些元素髮生了變化,我花了幾個小時才找到解決方案,但他對我來說似乎很古怪,也許你可以向我解釋。
function replace(){
var elements = document.getElementsByClassName('classOne');
for (var i=0; i<elements.length;i++) {
elements[i].className = 'classTwo';
}
}
不工作爲好,Demo here,[對鉻25和FF],所以我把循環係數:
function replace(){
var elements = document.getElementsByClassName('classOne');
for (var i=0; i<elements.length;i) { //----here the different --- i without ++
elements[i].className = 'classTwo';
}
}
這非常適用!似乎被稱爲「推」,並沒有係數需要... 這是正常的?這與我見過的例子不同。
在此先感謝!
給予好評的答案和解釋 – 2013-03-22 04:08:40
謝謝!聽起來沒錯.. 但是...它是有意義的編程? 「元素」是一個存在的對象,而不是動態的對象,沒有你可以改變? – MeNa 2013-03-22 04:38:12
@MeNa - 儘管'elements'變量對你的函數是局部的,它所引用的數組也可以被DOM訪問(並由其維護)。每個元素的'className'屬性實際上觸發了DOM機制中的setter函數。該函數的一個副作用是從元素引用的數組中移除該元素。所以它不會改變「沒有你」;它會因爲您更改其某個元素的'className'屬性而發生更改。引用舊的聖賢:_「這不是一個錯誤,這是一個功能!」_ – 2013-03-22 04:47:04