gpt4 book ai didi

javascript - 无法在 JavaScript 中设置事件处理程序

转载 作者:行者123 更新时间:2023-12-02 20:29:44 25 4
gpt4 key购买 nike

我想为输入文本控件添加事件处理程序。控件是动态生成的。我的代码是这样的:

JavaScript:

var settings_check = new Array("checkVMName()","checkDiskMB()","checkMemMB()","checkEsx()","checkDatastore()");
...
_inputbox = document.createElement("input");
_inputbox.type = "text";
_inputbox.id = settings[zindex];
_inputbox.onblur = settings_check[zindex];

_hint = document.createElement("hint");
_hint.id = settings[zindex] + "_Label2";
_hint.innerText = settings_hint[zindex];

mycurrent_cel2.appendChild(_inputbox);
mycurrent_cel2.appendChild(_hint);

但是这个方法行不通。我用 Firebug 检查了 HTML,发现输入文本控件根本没有“onblur”属性。

HTML

<tr>
<td>....</td>
<td><input type="text" id="Datastore">
<hint id="Datastore_Label2">start with /</hint>
</td>
</tr>

我还尝试了其他方法来设置事件处理程序,例如

_inputbox.onblur = function(){alert("test");};

_inputbox.setAttribute("onblur",func);

两者都不起作用。 :(

如果我使用 Firebug 为 HTML 中的输入文本控件手动添加 onblur=function(){...} 并执行,则 onblur 确实可以工作。所以问题是:如何在 JavaScript 中为控件设置事件处理程序?我的代码有什么问题吗?谢谢。

最佳答案

您正在创建一个字符串数组,其中包含函数调用,这是完全不正确的。

您需要为事件触发时希望调用的函数分配引用。您只需将函数名称(不带 () 或引号)存储在数组中即可实现此目的,并且它应该可以工作(函数也必须事先在当前作用域中定义) :

var settings_check = [checkVMName, checkDiskMB, checkMemMB, checkEsx, checkDatastore];

因此,本质上,settings_check 只是一个函数引用数组。

查看此jsFiddle example说明这个概念。

关于javascript - 无法在 JavaScript 中设置事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com