我试过这个:
<div id="a">A</div>
<div id="b">B</div>
<script>
let a = document.getElementById('a');
let b = document.getElementById('b');
a.onclick = function() { alert('hi from a'); };
b.setAttribute('onclick', function() { alert('hi from b'); });
</script>
单击 A 将显示警报。单击 B 会发出以下错误消息:Uncaught SyntaxError: Function statements require a function name
。为什么?
https://codepen.io/issactrotts/pen/yLYEXKZ
属性值是字符串,而不是函数。
请改用addEventListener
。
此错误显示是因为 setAttribute 只是获取字符串而不是函数
如果你想添加你应该使用的事件,你的代码是不正确的
b.onclick = function(){};
或
b.addEventListener("click",function(){});
但是如果你想设置onclick属性,你不能设置功能,你可以使用它
function bclick() { alert("hi from b"); }
b.setAttribute("onclick", "bclick()");
或者你可以使用 toString((
b.setAttribute("onclick", (function(){alert("hi from b");}).toString());
但是当我单击它时,它不做,因为那个只是 exsit 函数没有运行
您可以在值中使用字符串
b.setAttribute("onclick", 'alert("hi from b")';