繁体   English   中英

javascript onchange事件,调用带有多个参数的函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM