我试图将参数传递给onmouseover事件,如下所示:
function obj(id){
if (!(this instanceof obj)) return new obj(id);
this.element = (typeof id === 'string') ? document.getElementById(id) : id;
}
obj.prototype.call = function(content){
this.element.addEventListener('mouseover',function(){
console.log(content); // => undefined
// My mistake is right here.
var content = 'Hello';
},false);
};
//Edit
function temp(){}
temp.prototype.content = function(){
return 'Hello World';
};
var temp = new temp();
obj('id').call(temp.content());
我无法弄清楚变量content
为undefined
的原因。而且,我怎么能做对的?
请有人帮我解决这个问题。我真的很感激。
答案 0 :(得分:0)
我猜,你的回调是用不同的范围或类似的东西执行的。
尝试使用闭包:
obj.prototype.call = function(content){
this.element.addEventListener('mouseover',(function(content){
return function(){
console.log(content); // => undefined
};
})(content),false);
};
答案 1 :(得分:0)
适合我:http://jsfiddle.net/ANB3z/
您的ID无效(在这种情况下,您会收到不同的错误)或“未定义的”错误。您看到的消息是在控制台中运行脚本本身而不是mouseover
事件的结果。