2012-07-15 162 views
0

我需要從頁面中的所有元素中刪除特定的班級屬性。那就是我們需要從當前html頁面的所有元素中刪除特定的類。我們只有類名作爲參考(我們需要從該頁面中刪除)而沒有別的。使用javascript刪除班級

請注意,我不能使用任何像ID或其他類參考,也是我不能使用任何JavaScript庫,這也...

任何建議在此將不勝感激。

另請注意,我們需要刪除的課程不會超過兩次。

+0

請提供一些描述您的html結構的代碼,以便我們更有可能提供幫助 – Ando 2012-07-15 17:58:13

+1

從* what *元素中刪除類。他們全部?他們中有一些?在什麼情況下,或者什麼事件? ......我對這個問題的投票感到着迷。 – 2012-07-15 18:01:39

+0

目前尚不清楚。你想從具有該類的元素中刪除特定的「類名」(所以,你知道你將要刪除的內容)還是其他內容?你想從頁面的所有元素中刪除所有的類屬性?什麼是識別「一個特定的類屬性」? – ZER0 2012-07-15 18:10:54

回答

6
function removeClass(className) { 
    // convert the result to an Array object 
    var els = Array.prototype.slice.call(
     document.getElementsByClassName(className) 
    ); 
    for (var i = 0, l = els.length; i < l; i++) { 
     var el = els[i]; 
     el.className = el.className.replace(
      new RegExp('(^|\\s+)' + className + '(\\s+|$)', 'g'), 
      '$1' 
     ); 
    } 
} 

,只是把它作爲:

removeClass('desired-class-name'); 

UPDATE:看到現場演示:http://jsbin.com/eyuxur

+0

你讀過這個問題了嗎?第二句話? – 2012-07-15 18:02:27

+0

@DavidThomas好...爲了從元素中刪除類,你需要**知道那個類。並且要知道我的代碼不需要任何「任何引用,如id或** another ** class」。 – 2012-07-15 18:06:37

+0

您的代碼無法可靠運行,如果您嘗試刪除「欄」,屬性值「foobarbaz」將替換爲「foobaz」。另外,您應該使用現場的'className'屬性。 – PointedEars 2012-07-15 18:10:55

0

這裏有一個方法可以是非常大的網頁慢,但是移除來自所有元素的類。

var list = document.getElementsByTagName('*'); 
for(var i=0; i < list.length; i++){ 
    list[i].className = list[i].className.replace('YourClassName',''); 
} 
+0

您正在使用'className',這很好,但與gion_13的代碼存在相同的問題。 – PointedEars 2012-07-15 18:12:55

8

如果您使用的是最新的瀏覽器:

var forEach = Array.prototype.forEach; 
var className = "yourclass"; 

forEach.call(document.querySelectorAll("." + className), function(node) { 
    node.classList.remove(className); 
}); 

見:forEachquerySelectorAllclassList進一步的細節。

+0

最好的解決方案還有... – Dimo 2013-09-25 20:04:05

+0

IE9不支持classList屬性,更低的 – 2014-08-31 16:46:28

+0

@bhavya_w這就是爲什麼我以「* if * you're a * modern * browser」開頭的原因。另外,我發佈在答案中的[classList](https://developer.mozilla.org/en-US/docs/Web/API/element.classList)鏈接提供了一個跨瀏覽器的實現(IE> 7) 。 – ZER0 2014-09-01 08:29:18