簡體   English   中英

setAttribute 不是函數

[英]setAttribute is not a function

這是一些HTML:

<ul>
  <li>lorem</li>
  <li>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eaque magnam expedita aspernatur suscipit ea ad nisi corporis sequi labore consequatur odit, impedit quia quisquam inventore, recusandae similique esse excepturi distinctio.</li>
  <li>Susan</li>
  <li>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad vitae consequatur vel nostrum? Sunt, quas iure libero aut laborum facere unde quidem dolorem dicta, eaque, eveniet dolore harum iste deleniti.</li>
</ul>

和 JavaScript:

var text = document.getElementsByTagName('ul')[0];
var firstItem = text.firstChild;
var lastItem = text.lastChild;
firstItem.setAttribute('class', 'complete');

瀏覽器顯示此錯誤:

firstItem.setAttribute 不是函數

你需要做firstItem.setAttribute('class', 'complete'); 因為firstItem已經有一個元素。 您還需要將firstChildlastChild更改為firstElementChildlastElementChild以便您可以對它們使用setAttribute()方法:

 var text = document.getElementsByTagName('ul')[0]; var firstItem = text.firstElementChild; var lastItem = text.lastElementChild; firstItem.setAttribute('class', 'complete'); lastItem.setAttribute('class', 'done');
 .complete{ color: red; } .done { color: blue; }
 <ul> <li>lorem</li> <li>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eaque magnam expedita aspernatur suscipit ea ad nisi corporis sequi labore consequatur odit, impedit quia quisquam inventore, recusandae similique esse excepturi distinctio.</li> <li>Susan</li> <li>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad vitae consequatur vel nostrum? Sunt, quas iure libero aut laborum facere unde quidem dolorem dicta, eaque, eveniet dolore harum iste deleniti.</li> </ul>

我只想補充一點,其他答案沒有提到。

在以下 HTML 中:

<ul>
  <li>some text</li>
</ul>

... <ul>firstChild實際上是一個文本節點(包含空格)而不是一個<li>節點。 如果 HTML 是:

<ul><li>some text</li></ul>

無論如何,這就是firstElementChilddocument.querySelector("ul > li")解決這個問題的原因; 不考慮文本節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM