gpt4 book ai didi

javascript - 有没有统一的方法将 `innerHTML` 和 `onclick` 设置为一个元素?

转载 作者:行者123 更新时间:2023-12-03 08:40:01 25 4
gpt4 key购买 nike

我正在尝试使用其 JSON 描述来创建元素。JavaScript 现在提供了这个:

elem.innerHTML = "Text"; // works fine
elem.onclick = "alert(true)"; // doesn't work

elem.setAttribute("innerHTML", "Text"); // doesn't work
elem.setAttribute("onclick", "alert(true)"); // works fine

不幸的是,我不被允许打印

elem.onclick = function() {alert(true)};

是否有统一的方法将 innerHTMLonclick 设置为一个元素?像这样:

var props = {"innerHTML":"Text", "onclick":"alert(true)"};
var elem = document.createElement("BUTTON");

for (property in props) elem[property] = props[property];
/* or */
for (property in props) elem.setAttribute(property, props[property]);
/* or maybe something else */

最佳答案

您冷使用Function构造函数:

elem.onclick = new Function('', 'return alert(true);');

See working Fiddle

编辑:我找不到对元素上的事件和属性执行此操作的统一方法,但由于所有事件都以 on 关键字开头,因此您可以检查它是否是 for 循环中的事件或属性:

for (property in props) {
if(property.substr(0,2) === 'on') {
//an event
elem.setAttribute(property, props[property]);
}
else {
//an attribute
elem[property] = props[property];
}
}

See working Fiddle

关于javascript - 有没有统一的方法将 `innerHTML` 和 `onclick` 设置为一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33072063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com