javascript - InnerHTML 不输出 anchor 元素,而是输出当前 pg url。为什么?

标签 javascript

在下面的代码中,links_container.innerHTML = links;输出http://localhost/pagination/js-pagination.html#而不是<a href='#'>Page 1</a> .

HTML

<div class="pagination-links"></div>

JS

function createLinks() {
        var links_container = document.getElementsByClassName('pagination-links')[0];

for(i=1; i<=5; i++){
    var link = document.createElement('a');
    var txt = document.createTextNode('Page ' + i + " ");
    link.setAttribute("href", "#");
    link.appendChild(txt);
    links_container.innerHTML = link;
  }
}

哪位大佬能解释一下吗?为什么

最佳答案

innerHTML 是一个字符串属性,因此采用字符串作为值。您的 link 是一个元素对象,因此它通过其 toString() 方法隐式转换为字符串,该方法确实返回 URL。

以下是解决此问题的两种方法:

这两种解决方案都要求您在 for 循环之前运行links_container.innerHTML = ''来清除容器

  1. 使用 links_container.appendChild(link) 附加元素

  2. 使用元素对象的outerHTML:links_container.innerHTML += link.outerHTML

第一个选项更合适,因为它将您创建的 DOM 元素直接插入到 DOM 中。第二个选项将 DOM 元素转换为字符串,然后强制浏览器从该 HTML 创建一个新的 DOM 元素。如果元素中添加了任何事件监听器,它们就会丢失。

关于javascript - InnerHTML 不输出 anchor 元素,而是输出当前 pg url。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45734190/

相关文章:

javascript - 有一个始终在底部的页脚

javascript - 获取网格中选定行的单元格的原始值

c# - 将通用字符串列表从处理程序返回到 JS 数组

javascript - 等高框+观察布局变化

javascript - setTimeout 不起作用

javascript - 从数组向对象添加值,并且当数组用完时不会变得未定义

javascript - Greasemonkey 脚本注入(inject)

javascript - getJSON 不显示文件路径

javascript - 是否可以从 C#(或 C++)获取 HTML 元素(如 iFrame、div 等)的窗口句柄?

javascript - 将 HTML TAG 对象转换为 JSON 对象