2

我想覆蓋由class = cc-product-infolink定義的一些文本,它由CMS定義,所以我必須通過JS更改此類中的文本。這是我第一次使用它,所以我寫了一個小腳本,但它不起作用。爲什麼?通過JavaScript覆蓋類

我想更改「inkl.MWSt,VersandkostengemäßAngaben」中的文字「inkl.MMWSt,zzgl. Versandkosten」。 JS代碼必須在head中工作,因爲不可能將其放入body

這是我的HTML代碼:

<div class="cc-product-infolink"> 
    <a class="cc-no-clickable-arrow" href="/j/shop/info/m/me6f40c3b0bd58b35" rel="nofollow">inkl. MwSt, zzgl. Versandkosten</a> 
</div> 

我的JS-代碼

<script type="text/javascript"> 
    //<![CDATA[ 
var versand = document.getElementsByClassName('cc-product-infolink')[0]; 
versand.getElementsByTagName('a')[0].textContent += ' gemäß Angaben'; 
    //]]> 
    </script> 

,它應該工作在這裏:http://www.wonnemond.de/taschen/karl/#cc-m-product-8254989095 也許有人能幫助我。

+0

您正在使用「的document.getElementById」,而應該使用「document.getElementsByClass」 – koningdavid

+0

也許你誤解了一些概念? HTML中的類是指CSS類,它用於設置元素的樣式。或者你的意思是你想用這樣的類來覆蓋元素的內容? –

+0

你說得對,我想用CSS類覆蓋元素的內容cc-product-infolink – user3105045

回答

2
var versand = document.getElementsByClassName('cc-product-infolink')[0]; 
versand.getElementsByTagName('a')[0].textContent += ' gemäß Angaben'; 
  • 一些注意事項:

    1. idclass是不一樣的。顧名思義,getElementById通過屬性id檢索元素。你的元素只有class,所以getElementsByClassName是你需要的。我想你不能改變HTML。

    2. textContent用於設置/獲取 DOM元素的文本內容。舊IE(IE8及更早版本)改爲使用 innerText

    3. firstChild不起作用,因爲鏈接不是該div的第一個孩子。在鏈接之前有一個包含換行符和縮進的文本節點。使用getElementsByTagName你可以解決這個問題。

  • jsFiddle Demo

+0

這是行不通的。 – user3105045

+0

@ user3105045因爲在HTML中鏈接之前有一個文本節點(輸入和縮進標籤/空格)。我會幫你找到解決方案。 – kapa

+0

它在jsFiddle Demo中工作,但它不能在網站上工作。 – user3105045