javascript - onclick 函数未在创建的 DOM 元素的 externalHTML 中注册

标签 javascript events properties attributes appendchild

我想知道为什么当我使用outerHTML 按钮时,由createElement("button") 创建的按钮的onclick 函数没有被注册和触发。我的意思是,像标题这样的普通属性确实会被附加,但函数不会。

function createBtn(answer){
    var btn = document.createElement("button");
    var btnTxt = document.createTextNode("Are we twins?");
    btn.appendChild(btnTxt);

    btn.onclick = function(){
        alert(answer);
    }
    btn.title = "This is the title";

    document.write(btn.outerHTML); // onclick is not registered
    document.body.appendChild(btn); // onclick is registered

}

createBtn("Not quite");

最佳答案

HTML 节点的outerHTML 属性返回String。这些事件将附加到 HTML 节点,但是当您将它们转换为 Stings 时,所有链接到它们的事件都会丢失。因此,当您将 document.writebtn.outerHTML 一起使用时,它会将按钮复制为文本,并且附加的所有事件都会丢失。

但是当您将 appendChildbtn 对象一起使用时,它会附加 HTMLButtonElement 对象及其附加的事件。

因此,如果您必须使用 outerHTML,请在将其写入文档后附加事件。

关于javascript - onclick 函数未在创建的 DOM 元素的 externalHTML 中注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44944700/

相关文章:

javascript - 需要建议 : How to properly connect React to MongoDB

javascript - iCal 文件下载在 IE 中发送错误

c# - 使用默认获取/设置主体创建许多属性的快捷方式

javascript - 关闭在实时元素上失败

javascript - 如何设置元素的高度与其内容相同?

python - 在赋值错误之前引用事件变量,我不知道如何修复它

java - 为什么单击按钮时无法选择所有文本?

javascript - 如何通过javascript捕获浏览器的事件

java - .properties 文件中的条件语句

variables - Write-Host 无法解析变量的属性