簡體   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