JavaScript onclick事件问题

时间:2011-05-12 15:55:44

标签: javascript javascript-events

首先让我说我的JavaScript技能缺乏,至少可以这么说。我遇到了以下功能的问题:

function setClickHandler(element) {
    element.onchange = function () {
        var id = this.options[this.selectedIndex].value;
        if(document.getElementById(id) !== null){
            clickHandler = document.getElementById(id).onclick;
        } else {
            clickHandler ="runMe('" + this.id + "','" + id + "','','null')"; }
        clickHandler.apply(this);
    }
}

基本上它的作用是如果一个元素存在“id”然后使用那些元素onclick函数,如果它不存在则在函数内创建一个。然后将此onclick函数应用于元素。

一切正常,除非“id”不存在,并进入必须创建clickHandler的else语句。我无法弄清楚为什么这不起作用。我确实注意到当我记录它时如果clickHandler是从另一个现有id中获取的,那么clickHandler会输出类似(onclick).event的地方,如果它进入else语句,它输出runMe('24','54','','null “)。

我希望我能够很好地解释这一点。非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

你在else的情况下创建了一个字符串,你不能将其作为函数调用。试试这个

if (document.getElementById(id) !== null) {
    clickHandler = document.getElementById(id).onclick;
    clickHandler.apply(this);
}
else {
    // clickHandler = "runMe('" + this.id + "','" + id + "','','null')";
    var runMeArgs = [this.id, id, '', 'null'];
    runMe.apply(this, runMeArgs);
}

答案 1 :(得分:1)

在一种情况下,您将clickHandler设置为某个功能,而在另一种情况下,您将其设置为字符串?

if (...) {
   ...
} else {
   var me = this;
   clickHandler = function() {
      runMe(me.id, id, '', null);
   }
}
...

可能。