这是我的想法是简单的代码:为什么我的javascript鼠标事件不会触发?
<html>
<head>
<script>
function Foobar(id) {
self = this;
self.id = id;
self.canvas = document.createElement('canvas');
self.canvas.style.border = '1px solid black';
document.body.appendChild(self.canvas);
self.canvas.addEventListener('mousedown', self.onMouseDown, true);
self.onMouseDown = function(e) {
console.log(self.id);
}
}
var s1, s2;
function onLoad() {
s1 = new Foobar(1);
s2 = new Foobar(2);
}
</script>
</head>
<body onload='onLoad()'>
</body>
</html>
为什么控制台不能与身份证号码弹出?
这里有一个小提琴:http://jsfiddle.net/VRn7v/
全局的攻击,'var'对自己来说不是可选的。另外self在JavaScript中有意义,选择一个不同的变量名称。 – epascarello 2012-08-03 19:51:12
啊,一个隐含的全局变量'self'与现有的全局变量'self'碰撞的一个很好的例子。记住孩子,申报你的变数。 – 2012-08-03 19:51:40
@epascarello它在浏览器环境中具有意义(因为它是对全局对象的引用),但它在JavaScript *本身*中没有意义。 – 2012-08-03 19:53:55