0

IE9で、エラーMicrosoft JScriptランタイムエラーが発生します:'populatedropdown'が行に定義されていません<input type="button"....

リテラル値を正しくエスケープしていないと思います。どのように変更すればよいですか?

<html>
<head>
<title>Add items to dropdown</title>

<script type="text/javascript">
function populatedropdown(var devicelist) {
    var devList = document.frm.optdevices;
    var arrDev = split(devicelist, ";");

     devList.options.length = 0; // this removes existing options

     for (var i = 0; i <= 3; i++) {
         var option = new Option(arrDev[i],i);
         devList.options[i] = option; 
     }
}

</script>

</head>
<body>
<form name="frm">

<select name="optdevices">
</select>

<input type="button" value="TestAdd" onclick="populatedropdown('201;202;203;')" />

</form>
</body>
</html>
4

3 に答える 3

1

JavaScriptをHTMLから分離し、構文エラーを削除します。このフィドルを見る

function populatedropdown(devicelist) {
    var devList = document.frm.optdevices;
    var arrDev = devicelist.split(';'); // split not defined

     devList.options.length = 0; // this removes existing options

     for (var i = 0; i <= 3; i++) {
         var option = new Option(arrDev[i],i);
         devList.options[i] = option; 
     }
}

// on window load
window.addEventListener('load', function load(){
    // attach event listener to button
    document.getElementById('testID').addEventListener('click', function click(){
        populatedropdown('201;202;203;');
    }, false);
}, false);
​

HTML

<form name="frm">

<select name="optdevices">
</select>

<input id="testID" type="button" value="TestAdd" />

</form>​
于 2012-11-11T18:25:34.023 に答える
0

関数パラメーターにvarがあるため、関数は無効です。スクリプトに構文エラーがある限り、関数は認識されません。function populatedropdown(var devicelist)有効ではない。varパラメータに含めるべきではありません

function populatedropdown(devicelist) {
    var devList = document.frm.optdevices;
    var arrDev = split(devicelist, ";");

     devList.options.length = 0; // this removes existing options

     for (var i = 0; i <= 3; i++) {
         var option = new Option(arrDev[i],i);
         devList.options[i] = option; 
     }
}
于 2012-11-11T18:22:25.427 に答える
0

まず、関数の定義を介してvarを記述しないでください。また、関数splitの2番目の使用法は間違っています。splitは次のように使用する必要があり var result = strToSplit.split(";")ます。splitを使用する場合は;、ここでsplitについて読むことができます。JavascriptSplitメソッド

ここに作業スニペットがあります

function populatedropdown(devicelist) {
    var devList = document.frm.optdevices;
    var arrDev = devicelist.split(";");

     devList.options.length = 0; // this removes existing options

     for (var i = 0; i <= 3; i++) {
         var option = new Option(arrDev[i],i);
         devList.options[i] = option; 
     }
}

IE9でテストしたばかり

于 2012-11-11T18:25:49.507 に答える