【问题标题】:Set content of custom HTML element设置自定义 HTML 元素的内容
【发布时间】:2019-04-03 10:00:25
【问题描述】:

我实现了一个模态作为自定义 HTML 标记。

class ModalDialog extends HTMLElement {
    constructor() {
        super();

        this.shadow = this.attachShadow({
            mode: 'open'
        });

        this.modal = document.createElement('div');
        this.modal.className = 'modal';

        this.modalWrapper = document.createElement('div');
        this.modalWrapper.className = 'modal-wrapper';

        this.modalHeader = document.createElement('div');
        this.modalHeader.className = 'modal-header';
        this.modalHeader.innerHTML = 'Oops, nothing found!';
        ...
    }

另外,我实现了另一个继承自 HTMLElement 的类。我们称它为 A。Said 类正在尝试创建一个 ModalDialog,应该将其添加到 DOM 中以便显示。

现在,我的问题是:如何从 A 类设置 modalHeader 的文本? 我试图设置一个属性并在 ModalDialog 类中读取它,但当时该属性是未定义的。

class A extends HTMLElement {
    ...
    this.modal.setAttribute('headerText', 'Blablabla');
    ...
}

有什么好办法解决这个问题吗?

【问题讨论】:

    标签: javascript html ecmascript-6 custom-element


    【解决方案1】:

    您的 A 类应该能够访问内部元素并像这样设置它们的 innerHTMLtextContent

    class A extends HTMLElement {
      ...
      this.modal.innerHTML = 'Blablabla';
      ...
    }
    

    另外,请确保将this.modal 放入shadowRoot

    this.shadowRoot.appendChild(this.modal);
    

    另外需要注意的是,您不需要保存 this.attachShadow 的结果:

     this.shadow = this.attachShadow({mode: 'open'});
    

    因为它已经作为this.shadowRoot 提供。

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 2012-01-20
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多