2017-10-16 135 views
-1

我一直在閱讀有關不同getlementbyID,name等,但我堅持一個問題。我的DOM樹是這個樣子:無法使用JavaScript獲取DOM元素

<suggestion> 
    <term>Some text here</term> 
    <term changed="true"> Some text here </term> 
</suggestion> 

我試圖讓標記名長期changed="true"但是當我嘗試getElementsByTagName這是行不通的。我也嘗試過使用querySelectorAll("term changed=true"),但它仍然不起作用。

有時可能有不止一個<term>,所以我並不想取第二個元素,有時它可能是第3,第4或第9元......

我如何能明確獲取這個元素,而不是其他元素只是<term>

+1

具體什麼你與「querySelectorAll」試過嗎? – TKoL

+0

querySelectorAll(「term changed = true」); 它不返回任何東西,但是當我在控制檯中查找時,它假設返回.. – PlayPhil1

+1

'getlementbyID'與'getElementbyId'不一樣。 – tommyO

回答

1

也許你試圖找到帶有錯誤選擇器的term=true。我有它工作得很好,我認爲:

https://jsfiddle.net/wdtyore1/1/

var element = document.querySelector('term[changed="true"]');

+0

這是我正在尋找的解釋,我不明白你爲什麼需要使用括號,但這解決了我的問題,並且工作完美! – PlayPhil1

+0

'querySelector'只是CSS選擇器。字符串之間的空格表示您正在討論之前選擇的元素*內部的元素,所以'term changed'會在'term'元素內尋找'changed'元素。方括號是你如何選擇具有特定屬性或屬性值的元素 – TKoL

+0

@ PlayPhil1我很高興你的東西完美地工作。如果您覺得它解決了您的問題,請將答案標記爲正確。 – TKoL

0

只是因爲這不是HTML5規範的一部分,並不意味着它是不是通過JS

訪問

爲您具體的例子,這將讓你改變的值: document.getElementsByTagName('term')[1].getAttribute("changed")

注意document.getElementsByTagName('term')返回一個數組,所以你可能希望有一個循環來查看這個數組。

此外,如果你正在使用jQuery,你總是可以尋找這樣的事情: $('term[changed]').attr('changed')