我的情况:
function C() {
this.create = function() {
var div=document.createElement("div");
div.setAttribute("onclick","alert('this works')");
div.onclick=function(){
alert("this doesnt work");
}
document.appendChild(div);
}
this.create();
}
var x = new C();
是不是可以在javascript中设置onclick事件? 是否应该全局定义被调用的函数???我可以理解它没有全局定义的问题。但我想在我定义onclick事件的函数中使用私有变量。任何建议??????
答案 0 :(得分:1)
您发布的内容几乎是correct。将元素附加到除document
之外的任何内容,例如:document.body
。不要使用setAttribute
设置事件处理程序,因为它有问题。
您可以使用onclick
属性或W3C标准addEventListener
方法(IE中的attachEvent
)。
function C() {
this.create = function() {
var div = document.createElement("div");
div.innerHTML = "click me";
var inner = "WORKS!";
div.onclick = function(){
alert(inner); // private variable is ok
};
document.body.appendChild(div);
div = null; // avoid memory leak in IE
};
this.create();
}
var x = new C();
答案 1 :(得分:0)
怎么样?
div.addEventListener('click', function() {
alert('hello!');
}, false);
这样,该函数是匿名的,只能在您声明它的范围内看到。它不是全球性的。
以下是addEventListener上的一些API文档:https://developer.mozilla.org/en/DOM/element.addEventListener