为什么直接触发此功能而不是点击javascript?

时间:2011-12-03 00:20:25

标签: javascript

我有一个对象声明如下:

function weapon ( id, name){
    this.id = id;
    this.name = name;
    this.call; 
}

然后我创建了一个实例:

someweapon = new weapon (1, 'gun');
someweapon.call = function() { //do something };

当我创建元素时:

<img src='...' onclick='someweapon.call()' />

假设我会看到一个可点击的图片,我可以点击它来调用该功能。但是,只要显示图像,就会自动调用该函数(someweapon.call())。

对此有何解决方案?

2 个答案:

答案 0 :(得分:2)

我认为它与函数名称有关:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Call 所以你可以试试另一个。

答案 1 :(得分:2)

对我来说,你的代码是有效的。 .call()方法可能是从其他地方调用的。

Here是一个适用于我的代码段。

JavaScript的:

function weapon ( id, name){
  this.id = id;
  this.name = name;
}

someweapon = new weapon (1, 'gun');
someweapon.call = function() { alert("called"); };

this.call内的weapon()不需要undefined。如果您在那里定义它仍然具有值this.call = function() { alert("called"); };。您也可以在weapon()内写weapon,这意味着someweapon的每个实例都可以访问<img src='http://jsfiddle.net/img/logo.png' onclick='someweapon.call()' /> ,而不仅仅是call()

HTML:

.call()

编辑 tom Jared Farrish 有一个好点。函数已.call() defined。您正在为对象而不是函数定义{{1}},因此不应该(理论上)覆盖任何内容,但是不使用这样的名称是一个好习惯,因为它可能会让人感到困惑。将{{1}}重命名为其他内容。