相关疑难解决方法(0)

为什么使用setAttribute设置的onclick属性无法在IE中工作?

今天遇到这个问题,发布以防其他人有同样的问题.

var execBtn = document.createElement('input');
execBtn.setAttribute("type", "button");
execBtn.setAttribute("id", "execBtn");
execBtn.setAttribute("value", "Execute");
execBtn.setAttribute("onclick", "runCommand();");
Run Code Online (Sandbox Code Playgroud)

结果是让IE在动态生成的元素上运行onclick,我们不能使用setAttribute.相反,我们需要使用包含我们想要运行的代码的匿名函数在对象上设置onclick属性.

execBtn.onclick = function() { runCommand() };
Run Code Online (Sandbox Code Playgroud)

不好的想法:

你可以做

execBtn.setAttribute("onclick", function() { runCommand() });
Run Code Online (Sandbox Code Playgroud)

但根据@scunliffe,它将在非标准模式下在IE中中断.

你完全不能这样做

execBtn.setAttribute("onclick", runCommand() ); 
Run Code Online (Sandbox Code Playgroud)

因为它立即执行,并将runCommand()的结果设置为onClick属性值,也不能这样做

execBtn.setAttribute("onclick", runCommand);
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer

46
推荐指数
5
解决办法
14万
查看次数

标签 统计

internet-explorer ×1

javascript ×1