JavaScript onclick事件问题
让我首先说我缺乏JavaScript技能,至少可以这么说。我对以下功能有问题:JavaScript onclick事件问题,javascript,javascript-events,Javascript,Javascript Events,让我首先说我缺乏JavaScript技能,至少可以这么说。我对以下功能有问题: function setClickHandler(element) { element.onchange = function () { var id = this.options[this.selectedIndex].value; if(document.getElementById(id) !== null){ clickHandler = doc
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”不存在,并且它进入else语句,必须在该语句中创建clickHandler,否则一切都可以正常工作。我不明白为什么这行不通。我在记录时注意到,如果clickHandler是从另一个现有id获取的,那么clickHandler会输出类似(onclick.event)的内容,如果它进入else语句,它会输出runMe('24','54','null')
我希望我解释得足够好。任何帮助都将不胜感激,谢谢 在一种情况下,您将
clickHandler
设置为函数,在另一种情况下,您将其设置为字符串
if (...) {
...
} else {
var me = this;
clickHandler = function() {
runMe(me.id, id, '', null);
}
}
...
可能。在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);
}
else语句从未触发过吗?@JSager,它会正确触发,只是created onclick事件不会应用于元素。“runMe”是您在某处声明的函数,还是您试图用字符串创建它?@NiklasRingdahi,我正试图用字符串创建它实际上,它是我在其他地方创建的函数,我只是尝试在onclick上调用该函数并发送这些变量。这很接近,但是
runMe
的范围将与OP的代码所指示的范围不同。在维护参数时,您需要使用与runMe.apply(this)等效的函数。