0

whileループまたはコードのinnerHTMLセクションに問題があるかどうかはわかりませんが、送信ボタンがクリックされたときにdivタグのドロップダウンリストを表示できません。誰もがそれの何が悪いのか見ることができますか?

<html>
<head>
<script type="text/javascript">

function getvalue() {
 number = document.getnumber.input.value;
 document.getElementById("result").value = number; 
} 
</script>

</head>
<body>

<script>
function generatedropdown() {
html = '<select name="select" id="i">';
while (i < number)  {            
html+='<option>Test 1</option>';
html+='<option>Test 2</option>';
html+='<option>Test 3</option>';
html+='<option>Test 4</option>';
html+='<option>Test 5</option>';        
i++;
}
html+='</select>';
document.getElementById("my-output").innerHTML = html;
}
</script>


<form name="getnumber">
Input number: <input type="text" name="input">
<input type="button" value="Next" onClick="getvalue()">
</form>


<form id="showlists">
Number entered: <input type="text" id="result" readonly="readonly">     
<input type="button" value="Show lists" onClick="generatedropdown()">
<div id="my-output">Generated List:</div>
</form>
</body>
</html>
4

1 に答える 1

5

いくつかの問題:

  • の初期値を設定したことがないiため、設定または宣言したことのないグローバルの値を読み取ろうとしているため、コードはエラーをスローします。

  • あなたはgetvalue初期化するために呼び出されたことに依存していますがnumber、私はそれを期待していません。

  • 暗黙の文字列->数値変換に依存していますが、これはお勧めしません。parseIntユーザーから提供された数値を解析するために使用します。

  • (オプション)ループは、 (初期化した場合は機能しますが)forではなく、構成が設計されたものとまったく同じです。whilewhilei

  • 変数を宣言することは決してないので、暗黙のグローバルの恐怖の餌食になります。

基本をマスターするために、JavaScriptに関する優れた入門書またはチュートリアルを読むことをお勧めします。

最小限の更新は次のとおりです。

function generatedropdown() {
    // Declare your variables
    var html, i, number;

    // Get the number, and convert it from a decimal string
    // to a number explicitly rather than relying on implicit
    // coercion
    number = parseInt(document.getvalue.input.value, 10);

    // Probably bail if it's not a number
    if (isNaN(number)) {
        return;
    }

    // (Optional, but you were doing it) Show the number
    document.getElementById("result").value = number;

    // Build your HTML
    html = '<select name="select" id="i">';

    // This is exactly what `for` loops are for
    for (i = 0; i < number; ++i) {
        html+='<option>Test 1</option>';
        html+='<option>Test 2</option>';
        html+='<option>Test 3</option>';
        html+='<option>Test 4</option>';
        html+='<option>Test 5</option>';        
    }
    html+='</select>';
    document.getElementById("my-output").innerHTML = html;
}
于 2013-02-17T10:45:22.923 に答える