执行 appendChild 时的 Javascript 额外标记

标签 javascript html css

我正在尝试实现以下输出:

  <ul class="deck">
      <li class="card">
          <i class="fa fa-diamond"></i>
      </li>
      <li class="card">
          <i class="fa fa-paper-plane-o"></i>
      </li>

         ...
   </ul>

但是,当我运行我的代码时,我得到:

  <ul class="deck">

      <li>
          <li class="card">
              <i class="fa fa-diamond"></i>
          </li>
      <li>
          <li class="card">
              <i class="fa fa-paper-plane-o"></i>
          </li>
      </li>
         ...
   </ul>

所以你可以看到我得到了一个额外的封闭 <li>标签。我尝试了几种方法,但无济于事。生成此 html 的 JS 是:

const gameDeck = document.querySelector(".deck");
const fragment = document.createDocumentFragment();

for (i = 0; i < cardArray.length; i++) {
    const newElement = document.createElement('LI');
    newElement.innerHTML = "<li class=\"card\"><i 
    class="+cardArray[i]+"></i></li>"

    fragment.appendChild(newElement);
}

gameDeck.appendChild(fragment);

最佳答案

const newElement = document.createElement('LI');

这会创建一个 <li></li> .

innerHTML 属性设置元素内部的内容 所以如果你把 <li> <li> ,你最终会得到 <li><li></li></li>

相反,将 innerHTML 设置为您实际想要在 <li> 中的内容, 不包括 <li>那已经在那里了。此处使用模板字符串以提高可读性。

newElement.innerHTML = `<i class=${cardArray[i]}></i>`

然后,将类也附加到 li 上。两种不同的方法。我更喜欢第二种,特别是如果您想稍后添加一堆类。

newElement.className = 'card'
newElement.classList.add('card')

但是,您可以使用 outerHTML 规避上述所有相反,这符合我的预期 innerHTML做。

const newElement = document.createElement('LI');
newElement.outerHTML = "<li class=\"card\"><i class="+cardArray[i]+"></i></li>"

See this page on MDN for more details on outerHTML.

关于执行 appendChild 时的 Javascript 额外标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49582964/

相关文章:

javascript - 按值对 div 排序

javascript - 添加 javascript 调用以链接

javascript - 是否可以流动子 div 并使用水平溢出使它们填充主 div?

javascript - 部分内容仅在页面刷新后显示

CSS Different between (max-width :320px) and (max-device-width:320px)

javascript - 使用 highcharts 动态更新

javascript - stringByEvaluatingJavaScriptFromString 回调

php - 使用 PHP 将 ANSI 转义序列转换为 HTML

javascript - 在 HTML 中使用三元运算符来决定要实现的类

html - 是否可以在 CSS 中定位 "no target"?