'innerHTML'不起作用

时间:2016-11-15 10:29:09

标签: javascript innerhtml getelementbyid

我目前在我的页面中有这一行:

<p id="replaced">
    <a id="linkReplace" href="https://www.g2a.com/r/nowyoushare">
        <img src="images/ads.png" class="img-responsive" alt="" onmouseover="hover(this);" onmouseout="unhover(this);">
    </a>
</p>

因此adblock会检测并阻止我的链接和图片: image

所以用JavaScript创建了一个测试脚本,但它不起作用:/

代码:

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/lightbox.min.js"></script>
<script type="text/javascript" src="js/wow.min.js"></script>
<script type="text/javascript" src="js/main.js"></script> 
<script>
    if(document.getElementById('replaced').length == 0) {
        document.getElementById('replaced').innerHTML = 'chocolat';
    }
</script>

有人能帮助我吗?感谢

3 个答案:

答案 0 :(得分:1)

我无法理解你要实现的目标。你能更好地解释一下吗?

BTW ..

if(document.getElementById('replaced').length == 0) {
        document.getElementById('replaced').innerHTML = 'chocolat';
    }

基本上你说“如果替换的元素不存在,则替换它内部的内容”。怎么可能有效?

@bezoo

的回复后,

编辑

在检查元素是否存在后,您可以编写类似的内容来创建元素。

 if(document.getElementById('replaced').length == 0) {
            var p = document.createElement('p');
            p.setAttribute("id", "replaced");
        }

然后用你刚创建的元素的innerhtml做任何你想做的事。

<强> EDIT2 我误解了..

此代码应该可以使用

if(document.getElementById('replaced').innerHTML == "") {
            document.getElementById('replaced').innerHTML = 'chocolat';
        }

答案 1 :(得分:1)

  

但我希望如果“被替换”为空,那么将一些内容添加到

如果您想检查内容是否为空,请使用.innerHTML.length

if(document.getElementById('replaced').innerHTML.length == 0) {
    document.getElementById('replaced').innerHTML = 'chocolat';
}

希望这有帮助。

空内容案例

if(document.getElementById('replaced').innerHTML.length == 0) {
  document.getElementById('replaced').innerHTML = 'chocolat';
}
<p id="replaced"></p>

答案 2 :(得分:-1)

getElementById返回HTML元素节点。它没有length属性,因此该属性永远不会等于0

如果您要测试元素是否存在,请检查返回值是否为真值:

if (document.getElementById('replaced'))