首先让我说我的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 “)。
我希望我能够很好地解释这一点。非常感谢任何帮助,谢谢!
答案 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);
}
}
...
可能。