class Product extends HTMLElement {
        connectedCallback() {
          let products = [
            { name: "carrot", price: "$ 6.99" },
            { name: "blueberry", price: "$ 6.99" }
          ];

          let pro = document.querySelector("#product_item").content;
          let copyHTML = document.importNode(pro, true);

          for (let product of products) {
            copyHTML.querySelector(".cerealName").textContent = product.name;
            this.attachShadow({ mode: "open" });
            this.shadowRoot.append(copyHTML.cloneNode(true));
          }
        }
      }
      customElements.define("product-item", Product);
    <main>
      <product-item></product-item>
      <product-item></product-item>
    </main>

    <template id="product_item">
      <li class="cereal">
        <p class="cerealName" style="font-size: 3rem"></p>
      </li>
    </template>

我原以为结果会是

胡萝卜蓝莓

但结果是伴随着

胡萝卜胡萝卜

我似乎不能运行循环,你能告诉我为什么吗?

推荐答案

您只需拨打attachShadow一次-之后它会生成一个错误:

无法对‘Element’执行‘attachShadow’:无法在已承载卷影树的主机上创建卷影根.

您还只需要一个<product-item>元素.

      class Product extends HTMLElement {
        connectedCallback() {
          let products = [
            { name: "carrot", price: "$ 6.99" },
            { name: "blueberry", price: "$ 6.99" }
          ];

          let pro = document.querySelector("#product_item").content;
          let copyHTML = document.importNode(pro, true);
          this.attachShadow({ mode: "open" });
          for (let product of products) {
            copyHTML.querySelector(".cerealName").textContent = product.name;
            this.shadowRoot.append(copyHTML.cloneNode(true));
          }
        }
      }
      customElements.define("product-item", Product);
    <main>
      <product-item></product-item>
    </main>

    <template id="product_item">
      <li class="cereal">
        <span class="cerealName" style="font-size: 1.3rem"></span>
      </li>
    </template>

Javascript相关问答推荐

使用JavaScript更改json值顺序

JavaScript .Click()函数不起作用

如何在alpinejs中显示dev中x-for的元素

添加/删除时React图像上传重新渲染上传的图像

序列查找器功能应用默认值而不是读取响应

TypScript界面中的Infer React子props

单击子元素时关闭父元素(JS)

使用javascript将Plotly Expandable Sparkline转换为HighCharter Plot在bslib卡中

TypeScript索引签名模板限制

如何使覆盖div与可水平滚动的父div相关?

如何在Obsidian dataview中创建进度条

如何从调整大小/zoom 的SVG路径定义新的d属性?""

如何添加绘图条形图图例单击角形事件

如何使onPaste事件与可拖动的HTML元素一起工作?

提交链接到AJAX数据结果的表单

钛中的onClick事件需要在两次点击之间等待几秒钟

为什么我的按钮没有从&q;1更改为&q;X&q;?

如何使本地html页面在重新加载时保持当前可隐藏部分的打开状态?

如何组合Multer上传?

Reaction即使在重新呈现后也会在方法内部保留局部值