'innerHTML' 无效

'innerHTML' doesn't work

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

<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 检测并阻止我的 link 和图片: image

所以 a 使用 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>

有人可以帮助我吗?谢谢

getElementById return 是一个 HTML 元素节点。它没有 length 属性,因此 属性 永远不会等于 0.

如果您尝试测试元素是否存在,请检查 return 值是否为真值:

if (document.getElementById('replaced'))

我不明白你要实现什么..你能解释得更好吗?

顺便说一句..

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

基本上你是在说 "if the element replaced doesn't exist, replace the content inside of it"。它怎么可能工作?

编辑 在@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';
        }

But I want that if "replaced" is empty so add some content into

如果要检查内容是否为空,请使用 .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>