0

私が抱えている問題は、何らかの理由でテキストが配列に追加されていないことです。コードは問題ないように見えますが、array.length を出力することで追加されていないことを確認できます。

<script>
    function addradio(value)
    {
        var element = document.createElement("input");
        var label = document.createElement("label");
        var tele = document.getElementById("Telephone");
        var selected_text = tele.options[tele.selectedIndex].innerHTML;

        // Array uses to stop duplicate radio button
        var countryArray = new Array();

        // Used to check if country is already in array, defaults to false
        var contain = new Boolean();

        // Checks if text contains a "1", returns "-1" if it doesn't
        var str = selected_text.indexOf("1");

        // For loop to check if country name is already in the array
        for(var i = 0; i <= countryArray.length; i++)
        {
            if(countryArray[i] == selected_text)
                contain = true;
            else
                contain = false;
        }

        // If value is not empty and text does not contain a "1" and array doesn't contain specified country
        if(value != "" && str == "-1" && contain == false)
        {
            // Creating the attributes for a radio button
            element.setAttribute("type", "radio");
            element.setAttribute("value", value);
            element.setAttribute("name", "telephone");
            label.appendChild(element);
            label.innerHTML += selected_text + "<br>";

            // Creating the radio button
            var newradio = document.getElementById("fillme");
            newradio.appendChild(label);

            // Adds country into the array if its' not already there
            countryArray.push(selected_text);
        }
    }
</script>

誰でも私の Array.push() 関数の問題を特定できますか?

4

3 に答える 3

1

空の配列を作成し、それをループしようとします。空なので長さがないため、ループは実行されません。最後に値を配列にプッシュしますが、次にメソッドを実行すると、配列は最初から空になります

同じ配列を使用して関数を数回呼び出すつもりであると思われます。その場合、関数の外で配列を宣言する必要があります。

forループを取り除き、indexOf()必要な値が配列にあるかどうかを確認するために使用することもできます。

       // Move this outside function
    var countryArray = new Array();
     /* shorter syntax*/
     var countryArray =[];
    function addradio(value)...
于 2013-10-31T00:11:07.093 に答える
0

for ループが正しくありません。配列の最後の要素がありません。

        // For loop to check if country name is already in the array
        for(var i = 0; i < countryArray.length; i++)
        {
            if(countryArray[i] == selected_text)
                contain = true;
            else
                contain = false;
        }
于 2013-10-31T00:12:35.993 に答える