2014-02-23 25 views
1

我的HTML中有多個按鈕,我只想選擇那些沒有id屬性的按鈕。選擇html頁面中沒有id的元素

要選擇我使用這個腳本,它返回所有按鈕的所有按鈕:

var buttonNodesList = document.querySelectorAll('button'); 

我GOOGLE了一下,我發現,要得到誰擁有ID的所有按鈕,我已經使用腳本像這樣:

var buttonNodesList = document.querySelectorAll('button[id]'); 

那麼沒有任何方法可以返回沒有ID的按鈕嗎?

回答

3

在許多現代的瀏覽器可以使用:not

var buttonNodesList = document.querySelectorAll('button:not([id])'); 

如果你想更廣泛的瀏覽器支持,可以使用這樣的事情:

var buttonNodesList = [].slice.call(document.getElementsByTagName('button'),0) 
    .filter(function(button) { 
    return button.getAttribute('id') === null; 
    }); 

就剩下你一個數組,而不是一個NodeList並且只有當你有一個shim for filter時才支持大多數瀏覽器。

+0

用'filter'跳舞的點是什麼?例如。 IE 8及以下版本確實不支持':not()'選擇器,但它也不支持'filter'。 – Pavlo

+1

@Pavlo你不能真正地使用':not()'來緩衝,但是如果想要編寫在IE 8等瀏覽器上工作的腳本,現在大多數開發人員應該這樣做。 – Paulpro