java脚本中用于多个控件的单个onchange函数
Single onchange function for multiple controls in java script
我是java脚本的新手,遇到了一个问题。
我正在从Json字符串中动态创建一个表单,我们获得了一些方法(不相关)-将所有这些控件信息保留在Array中(代码中的allParamArray)。控件可以有父控件,因此父控件可以有依赖项(子控件)-我想将onchange事件附加到每个有依赖项的控件。依赖项以逗号分隔,并在refreshDependents函数中处理。
<code>
for (mp = 0; mp < allParamsArray.length; mp++) {
if (allParamsArray[mp].dependents) {
var parent = allParamsArray[mp].name;
var dependents = allParamsArray[mp].dependents;
document.getElementById(parent).onchange = function() {
refreshDependents(parent, dependents, this.selectedIndex)
};
}
}
</code>
问题是,当我更改控件refreshDependents的窗体值时,它具有最后一个父信息,而不是我更改的控件的父信息。
我想知道有没有什么方法可以实现指向同一onchange函数的多个控件,并且在onchange function
中,我们可以获得关于正在更改的控件的正确信息?
这应该做到:
function makeHandler(parent, dependents, selectedIndex){
return function(){
refreshDependents(parent, dependents, selectedIndex);
};
}
for (mp = 0; mp < allParamsArray.length; mp++) {
if (allParamsArray[mp].dependents) {
var parent = allParamsArray[mp].name;
var dependents = allParamsArray[mp].dependents;
document.getElementById(parent).onchange = makeHandler(parent, dependents, this.selectedIndex);
}
}
makeHandler
函数返回一个新的函数对象,该对象将保留parent
、dependents
和selectedIndex
变量在创建时的值。
相关文章:
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 是否可以禁用jquery中的单个单选按钮
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- 使用jquery选中/取消选中单个复选框
- 单个页面上有多个标记表单
- Onchange没有'不要显示或隐藏Div
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 用于多个类事件Jquery的单个函数
- Javascript Select OnChange没有'不要第二次工作
- 仅使用文件对象选择单个文件
- 如何使用单个表单填写多个表单
- onChange不足以从Dojo组合框触发查询
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 如何将html打包到单个应用程序中
- 如何使用javascript和PHP动态触发onChange事件
- react testUtils模拟点击单选按钮而不触发onchange
- 更改图层中单个矢量特征的图标
- jQuery 在 onchange 期间重置单个表
- java脚本中用于多个控件的单个onchange函数