2012-03-13 22 views
0
私は次のコードで問題が発生しています

を持つ関数呼び出しのonchangeイベント:ID値によって区別されている選択ボックスの 私が持っているn個の数字を、その変数MODNAMEとレベルテイク:javascriptの複数の引数

container.innerHTML = '<form id="listToolForm_'+ModName+level+'"><select id="listToolSelect_'+ModName+level+'" onChange="selValue(this.selectedIndex,'+ModName'+, level)"><option value="0">---</option></select></form>'; 

選択ボックスには、データベースから取得した値が入力されます(この部分はここではあまり関係ありません)。 ここ関数selValue(index, ModName, level)れる:

function selValue(index, ModName, level){ 
    document.getElementById("idArg"+ModName+"_lev"+level).value = index; 
} 

私が試した各フォームと、onChangeを用いて、ユーザにより選択されたインデックスを格納するID = idArg'+ModName+'_lev'+levelと隠し入力、及び機能selValue(X)が存在しますスクリプトの設定は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)+'" 

成功せず。

答えて

1

(私は'+ModName'+は、実際のコードで問題はないのタイプミスだったと仮定)以下:
onChange="selValue(this.selectedIndex, ' + ModName + ', level)"
は、実際のHTMLであることになり、その値、とModNameを置換するJavaScriptを発生します
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 + ')"

+0

ありがとうございました。それはちょうど....素晴らしい! – JMarc

+0

あなたは大歓迎です:) – rhino