3

这会在 chrome 中提醒 x,但不会在 Firefox(Chrome 25.0/FF 11.0)上提醒:

var x="hi.", b;
(b = document.createElement("button")).innerHTML = "click me";
b.setAttribute("onclick", "alert(x)"); // Doesn't work on FF, but works on Chrome
document.body.appendChild(b);

它在我使用 DOM(b.onclick,如下面的代码)时都适用,但在使用字符串形式的属性时返回“x not defined”错误,就像上面的代码一样。

var x="hi.", b;
(b = document.createElement("button")).innerHTML = "click me";
b.onclick = function(){alert(x)}; // Works on FF/Chrome
document.body.appendChild(b);

导致这种情况的两种浏览器之间有什么区别?

4

1 回答 1

1

这应该适用于 FF 和 Chrome,但不适用于 IE,您需要实际传递变量吗?

var x="hi.", b;
(b = document.createElement("button")).innerHTML = "click me";
b.setAttribute("onclick", "alert('"+x+"')");
document.body.appendChild(b);

据我所知,在(旧版本的)IE 中,您不能使用 setAttribute 设置内联 javascript。

FIDDLE(在 FF 19 和最新的 Chrome 中测试)

于 2013-03-01T22:55:11.943 回答