[英]javascript onchange event calling a function with multiple arguments
我在以下代码上遇到问题:我有n个选择框,其ID由变量ModName和level采用的值来区分:
container.innerHTML = '<form id="listToolForm_'+ModName+level+'"><select id="listToolSelect_'+ModName+level+'" onChange="selValue(this.selectedIndex,'+ModName'+, level)"><option value="0">---</option></select></form>';
然后,选择框由从数据库中获取的值填充(此部分在此处实际上并不相关)。 对于每种形式,都有一个id = idArg'+ModName+'_lev'+level
的隐藏输入,它将使用onChange
和selValue(x)函数存储用户选择的索引:这是selValue(index, ModName, level)
:
function selValue(index, ModName, level){
document.getElementById("idArg"+ModName+"_lev"+level).value = index;
}
我尝试了脚本设置var ModName = "SL"
,并且var level = 0
。 我收到一个错误:“未定义SL”。 另一个有效的测试是通过替换启动onChange
的函数:
onChange="selValue(this.selectedIndex)"
和
function selValue(index){
var level = 0;
var ModName = "SL";
document.getElementById("idArg"+ModName+"_lev"+level).value = index;
}
因此,如果启动的onChange函数具有一个参数,则代码有效,但使用多个参数时则无效。 我怀疑是因为行:
onChange = "selValue(this.selectedIndex,'+ModName'+, level)"
我试过了:
onChange="'+window["selValue"](this.selectedIndex, ModName, level)+'"
没有成功。
以下内容(我假设'+ModName'+
是问题中的错字,而不是实际代码中的错字):
onChange="selValue(this.selectedIndex, ' + ModName + ', level)"
使JavaScript用其值替换ModName
,从而导致实际的HTML为:
onChange="selValue(this.selectedIndex, SL, level)"
当处理onChange事件时,JavaScript引擎“认为” SL
是一个变量(因此出现错误),但实际上您希望它是一个字符串(如果我理解得很好)。
要将SL
转换为字符串,应将其用单引号引起来。 为此,您将需要\\'
转义序列,因为您已经在使用嵌套引号。 只需更换:
onChange="selValue(this.selectedIndex, ' + ModName + ', level)"
与:
onChange="selValue(this.selectedIndex, \\'' + ModName + '\\', level)"
另外,您的意思不是:
onChange="selValue(this.selectedIndex, \\'' + ModName + '\\', ' + level + ')"
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.