我想用 Shadow DOM 创建一个自定义输入
class TextBox extends HTMLElement {
constructor() {
super();
var shadow = this.attachShadow({ mode: 'open' });
let textbox = document.createElement("input");
shadow.appendChild(textbox);
textbox.addEventListener("change", validate);
function validate(event) {
console.log("input can be validated");
}
}
get value() {
console.log("get");
let textbox = this.shadowRoot.querySelector("input");
return textbox.value;
}
set value(newValue) {
console.log("set");
let textbox = this.shadowRoot.querySelector("input");
textbox.value = newValue;
}
}
customElements.define('test-textbox', TextBox);
应该可以通过js改变显示的文本框的值。如果我更改.value
文本框的属性,值的设置器不会被调用?我错过了什么吗?
稍后我想通过我的解决方案中的模板包含文本框,并能够通过设置文本框的值textbox.value ="Peter"