[英]click listener only fires once with a render method inside it
我在一個按鈕上有一個點擊監聽器,它使用渲染方法重置 div 的 innerhtml。 每次單擊時,單擊偵聽器都會觸發渲染,而其中的渲染則不會。
我試過刪除 html 標記和所有外部 function 調用,仍然是同樣的問題
為什么渲染會阻止射擊,或者為什么會有任何東西阻止它射擊(不止一次)?
設置:從 deno 捆綁 js
const myTemplate = (formData: HCPConfig) => {
return html` ... `;}
//byId just returns an el or throws an error
const rootEl = byId("form");
function render(el: Element, content: string) {
el.innerHTML = content;
}
render(rootEl, myTemplate(formData)); //this renders fine on page load
const action = byId("submitty");
action.addEventListener("click", function (e: Event) {
console.log(e);
//this prevents the event listener from firing more than once
render(rootEl, myTemplate(formData));
});
如果#submitty
按鈕位於#form
元素內,則您將使用該內容覆蓋按鈕和#form
的所有其他內容。 您應該只通過在表單中創建 div 或其他元素來覆蓋表單的一部分。
我可以通過將附加了 clicklistener 的按鈕放在重新渲染的項目之外來解決這個問題。
const ssFormCtl = (content = "Submit"): string => {
return html`<button type="button" class="btn btn-primary" id="submitty">
${content}
</button>`;
};
const myTemplate = (formData: HCPConfig) => {
return html` ... `;}
//byId just returns an el or throws an error
const rootEl = byId("form");
const ctlEl = byId("ssFormCtl");
function render(el: Element, content: string) {
el.innerHTML = content;
}
render(rootEl, myTemplate(formData));
render(ctlEl, ssFormCtl());
const action = byId("submitty");
action.addEventListener("click", function (e: Event) {
console.log(e);
render(rootEl, myTemplate(formData));
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.