簡體   English   中英

在標記名稱中創建新HTML屬性的問題

[英]Problem with Create new HTML Attribute in Tag Name

我想在<pre>添加屬性class='notranslate'以防止Google翻譯<pre>標記中的內容。

我使用此JavaScript,並且可以正常工作。

<script type='text/javascript'>
//<![CDATA[
var pre = document.getElementsByTagName("PRE")[0];
var att = document.createAttribute("class");
att.value = "notranslate";
pre.setAttributeNode(att);
//]]>
</script>

但是有問題。 那是JavaScript僅在第一個<pre>標記起作用。

任何人都可以幫助我,如何在整個標記<pre>添加class='notranslate'

謝謝你,我的英語不好意思。

不要執行document.getElementsByTagName("PRE")[0]; 它為您提供第一個元素(即[0]含義),但使用循環。

document.getElementsByTagName("PRE").forEach(pre => {
  const att = document.createAttribute("class");
  att.value = "notranslate";
  pre.setAttributeNode(att);
});

使用forEach迭代由getElementsByTagName返回的對象的值,並在循環中創建和附加屬性

 var pre = document.getElementsByTagName("PRE"); Object.values(pre).forEach((x)=>{ var att = document.createAttribute("class"); att.value = "notranslate"; x.setAttributeNode(att); }) 
 <pre>a</pre><pre>b</pre><pre>c</pre> 

它僅在第一個pre標簽處起作用,因為您正在選擇返回數組的第一個元素。

嘗試

for (let pre of document.getElementsByTagName('pre')) {
    // ... your manipulation code
}

通過添加[0]僅選擇第一個元素。 您需要遍歷整個NodeList

您還可以使用classList.add防止破壞現有的類

Object.values(document.getElementsByTagName('pre'))
    .forEach(pre => pre.classList.add('notranslate'))

暫無
暫無

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

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