2011-07-25 73 views
0

我有一個腳本(由@ briguy37 Remove multiple elements with same name using removeChild?幫助),通過使用for循環並使用removeChild刪除具有某個類名稱的所有元素。它在FF完美地工作,但在IE中,我得到的錯誤按課程刪除兒童在Internet Explorer中不工作

Object doesnt support this property or method 

該項目可瀏覽:http://jsfiddle.net/U8xkg/31/

錯誤指的是線路:

var childNodesToRemove = document.getElementById(parentId).getElementsByClassName('foo'); 

任何想法?

謝謝。

+2

IE不支持'getElementsByClassName' –

+0

@Jason哦真的嗎?不知道..它有一個替代名稱來獲取基於類名稱的元素? –

+0

使用jQuery庫 –

回答

2
document.getElementsByClassName = function(class_name) 
{ 
    var all = this.getElementsByTagName('*'); 
    var matchArray = new Array(); 
    var re = new RegExp("(?:^|\\s)" + class_name + "(?:\\s|$)"); 
    for (var i = 0, l = all.length; i < l; i++) 
    { 
     if (re.test(all[i].className)) 
      matchArray.push(all[i]); 
    } 
    return matchArray; 
} 
+0

className屬性是隻有IE和getAttribute('類')如果對於其他人 – Marwan

+0

@Maxon非常出色的優秀工作!工作很好! –

2

不幸的是IE中沒有方法getElementsByClassName。

+0

噢,好的。我得到即時將不得不使用getbytagname,即使它無效申請一個名稱的div:/ –

0

檢查是否有這樣的方法 - getElementsByClassName。 如果不是,請檢查是否支持querySelectorAll方法。 如果再次不是,您應該更好地使用一些框架來獲取節點。 特別是此代碼旨在跨瀏覽器。

0

如果你沒有在你的項目(jQuery的,YUI等)使用任何框架,然後做你自己一個忙,至少包括,增加了CSS3選擇器能力Sizzle library提高生產率到任何瀏覽器,但是非常輕巧和快速。這將讓你只是:

var childNodesToRemove = Sizzle(".foo");