這是我的想法是簡單的代碼:爲什麼我的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