为什么以下不起作用?显然该功能尚未添加!
function activatetypeinput(event, devtype){
//The function is called but it doesn't set the attribute
var dev_input = document.getElementById("device_input");
dev_input.setAttribute("onclick","add_device_input(event, this);");
}
Run Code Online (Sandbox Code Playgroud)
在我的 HTML 中,我有这样的内容(除其他外):
<select class="text-input" id="device_input">
<option>--</option>
</select>
Run Code Online (Sandbox Code Playgroud)
\n\n“为什么以下不起作用?显然该功能没有添加!”
\n
dev_input.setAttribute("onclick","add_device_input(event, this);");\nRun Code Online (Sandbox Code Playgroud)\n查看 Devtools F12,您将看到已onclick添加该属性和值。尽管它存在并且语法正确,但它不起作用。请参阅演示部分 - 来源:#btn3
如果通过 JavaScript 添加相同的属性和值作为属性,则它可以作为属性工作。属性不会显示在标记中,而属性则不会。出于所有意图和目的,onclick属性和onclick属性是相同的。
此行为是 jQuery 方法attr()和prop(). 作为一个例子,我经常看到这样的情况:
$(":checkbox").prop("checked", true);
$(":checkbox").attr("checked", true);
事件属性:像污垢一样古老,并且普遍受到 Web 开发社区的劝阻和皱眉。这是 OP 代码尝试使用方法以编程方式创建的事件处理程序类型setAttribute()。看来on 事件超出了set/get/removeAttribute()方法的范围,而且很可能也超出了 jQuery 方法的范围attr()(未经测试且不那么好奇)。请参阅部分:演示 - 来源:#btn0
<button onclick="funcName(event)">Discouraged</button>\nRun Code Online (Sandbox Code Playgroud)\n\xe2\xad\x90document.getElementById(\'id\').onclick = funcName;
document.getElementById(\'id\').addEventListener("event", funcName);
##解决方案
\n除了使用活动财产之外我们可以使用属性解析整个元素的 htmlStringonclick。这可以使用以下方法完成:
innerHTML 覆盖内容或者
\ninsertAdjacentHTML()**不会覆盖内容;灵活的; 快速地### 请参阅部分:演示- 来源:#btn4
var htmlString = `<button onclick="funcName(event, this)">4</button>`\n\ndocument.querySelector(\'${selectorOfTarget}\').insertAdjacentHTML("${position}", htmlString);\nRun Code Online (Sandbox Code Playgroud)\n"div"......: < div id="ID" class="CLASS"></ div >"#ID“......: <div id="ID" class="CLASS"></div>".CLASS"....: <div id="ID" class="CLASS" ></div>#ID + ul....: <div id="ID" class="CLASS"></div>\n< ul ></ ul >#ID + ul li.: <div id="ID" class="CLASS"></div>\n< ul >< li ></ li ></ ul > <!--"beforebegin"-->\n <ul>\n <!--"afterbegin"-->\n <li>ITEM</li>\n <li>ITEM</li>\n <li>ITEM</li>\n <!--"beforeend"-->\n </ul>\n <!--"afterend"-->\nRun Code Online (Sandbox Code Playgroud)\n 字符串字面量
\n \'<div id="\'+ID+\'" class="\'+CLASS+\'">+CONTENT+</div>\'\nRun Code Online (Sandbox Code Playgroud)\n模板文字
\n `<div id="${ID}" class="${CLASS}">${CONTENT}</div>`\nRun Code Online (Sandbox Code Playgroud)\ndev_input.setAttribute("onclick","add_device_input(event, this);");\nRun Code Online (Sandbox Code Playgroud)\r\n<button onclick="funcName(event)">Discouraged</button>\nRun Code Online (Sandbox Code Playgroud)\r\nvar htmlString = `<button onclick="funcName(event, this)">4</button>`\n\ndocument.querySelector(\'${selectorOfTarget}\').insertAdjacentHTML("${position}", htmlString);\nRun Code Online (Sandbox Code Playgroud)\r\n| 归档时间: |
|
| 查看次数: |
19573 次 |
| 最近记录: |