2013-11-28 41 views
1

只是想知道是否有人可以指出我在正確的方向,但是,與下面的JavaScript。它呈現很好,並沒有在Firefox中遇到任何錯誤,但是當進入ie8時沒有收到錯誤,沒有任何運行。JS從Mozilla v21到IEv8的問題

不要花太多時間在它的傢伙,但任何指針將不勝感激。請參閱下面的代碼;

//resetting error messages 
function resetMessages() { 
//reset errors 
var errors = document.getElementsByClassName('error'); 
while (errors.length != 0){ 
    errors[0].className = 'hidden'; 
} 
//reset messages 
var messages = document.getElementsByClassName('message'); 
while (messages.length != 0){ 
    messages[0].className = 'hidden'; 
} 
//reset highlights 
var fields = document.getElementsByClassName('highlight'); 
while (fields.length != 0){ 
    fields[0].className = fields[0].className.replace('highlight', 'lowlight'); 
} 

return true; 
} 

回答

0

getElementsByClassName方法不支持IE8。您可以使用CSS-selectors(例如document.querySelector('.error'))或使用shim作爲getElementsByClassName

+0

_.getElementsByClassName()_最初返回_live_節點列表,這樣就會避免你提到的無限循環,因爲循環體中的問題刪除類。儘管該方法的墊片不會返回實況列表。 (我說「最初」是因爲我相信DOM4規範改變它返回一個HTMLCollection。) – nnnnnn

+0

@nnnnnn:你有一點,沒有想到這一點。我會刪除答案的這一部分。 – KooiInc

0

使用

document.querySelectorAll('.error')