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