2012-06-04 84 views
2

我想使用JavaScript來刪除與按鈕或輸入標籤從網頁everyhting ...到目前爲止我的代碼刪除其中的一些,我不知道爲什麼。它僅刪除一個複選框出許多,和2個按鈕(有3個按鈕)JavaScript試圖刪除某些標籤的所有東西

var buttons = document.getElementsByTagName("button"); 
for (var j = 0; j < buttons.length ; j++) 
{ 
    buttons[j].parentNode.removeChild(buttons[j]); 
} 

var checkboxes = document.getElementsByTagName("input"); 
for (var j = 0; j < buttons.length ; j++) 
{ 
    checkboxes[j].parentNode.removeChild(checkboxes[j]); 
} 

回答

2
var checkboxes = document.getElementsByTagName("input"); 
for (var j = 0; j < buttons.length ; j++) // You use the wrong variable here 
{ 
    checkboxes[j].parentNode.removeChild(checkboxes[j]); 
} 

應;

for (var j = 0; j < checkboxes.length ; j++) 

關於向未刪除按鈕,也許是因爲它是一個input type="button",而不是一個<button>

請注意,document.getElementsByTagName("input");將獲取和刪除後面的所有輸入,而不僅僅是複選框!


我可以建議你使用類似jQuery的JavaScript庫嗎?你可以做的代碼,這將一條線,沒有任何問題:

$('input[type="button"], input[type="checkbox"], button').remove(); 
+0

AAAAH!這是我第二次在這裏發佈的東西,因爲我拼錯的長度!我一定很累。謝謝!! –

+0

@grizzly_beer。大聲笑。請注意其他問題......祝你好運! – gdoron

+0

哦,等等,那不是......我累了......:/ –

1

document.getElementsByTagName返回現場NodeList。這意味着,當您刪除第一個元素時,a)長度減少,並且b)列表中的(第一個)項目被移位。

有兩種可能的解決是:

  • 隨時刪除最後一個元素。該節點列表是按照文檔順序,以便將工作:

    for (var i=buttons.length-1; i>=0; i--) // var i=buttons.length; while(i--) 
        buttons[i].parentNode.removeChild(buttons[i]); 
    
  • 隨時刪除第一個元素,並且不要運行索引,直到length

    while (buttons.length) // > 0 
        buttons[0].parentNode.removeChild(buttons[0]); 
    

它也將使用jQuery和co,因爲它們將NodeList項目複製到靜態數組中。你可以做你自己,以及:

var staticButtons = Array.prototype.slice.call(buttons); 
for (var i=0; i<staticButtons.length; i++) 
    staticButtons[i].parentNode.removeChild(staticButtons[i]); 

,或者你使用返回靜態節點列表馬上文檔選擇方法,像querySelector

var staticList = document.querySelectorAll("button, input"); 
相關問題