1

ここでHTMLチェックボックスのフォームデータを取得しています:

host1 = document.getElementById("host1").checked;
host2 = document.getElementById("host2").checked;
host3 = document.getElementById("host3").checked;
host4 = document.getElementById("host4").checked;
host1Value = document.getElementById("host1").value;
host2Value = document.getElementById("host2").value;
host3Value = document.getElementById("host3").value;
host4Value = document.getElementById("host4").value;

チェックされたものを空の配列に追加し、配列の長さに変数を設定します。

if (host1) {hostsArray.push(host1Value); };
if (host2) {hostsArray.push(host2Value); };
if (host3) {hostsArray.push(host3Value); };
if (host4) {hostsArray.push(host4Value); };
hostsNum = hostsArray.length;

hostNum と hostsArray をコンソールに記録すると、hostNum はチェックボックスの数を正しく識別するため、配列は正しい長さを報告しますが、配列は空としてログに記録します。私は途方に暮れています。

4

1 に答える 1

0

このコードは Chrome で正常に動作します。この JSbin でも確認できます: http://jsbin.com/eSuwAri/2

単純な for ループでリファクタリングしましたが、例とほぼ同じです。問題はあなたの js または html コードのどこかにあると思います。

HTML :

<input id="host1" type="checkbox" name="host1name" value="host1value">host1 text<br>
<input id="host2" type="checkbox" name="host2name" value="host2value">host2 text<br>
<input id="host3" type="checkbox" name="host3name" value="host3value">host3 text<br> 
<input id="host4" type="checkbox" name="host4name" value="host4value">host4 text<br>               
<button onclick="test()">Click me</button>

Javascript :

    function test(){
        var hostsArray = new Array();
        for (var i=1;i<=4;i++){ 
            var id = "host" + i;
            var checked = document.getElementById(id).checked;
            var value = document.getElementById(id).value;

            if (checked) {
                hostsArray.push(value) 
            };
        }
        hostsNum = hostsArray.length;

        console.log("Array : ")
        console.log(hostsArray);
        console.log("number of value : " +  hostsNum);
    }

コンソール出力:

"Array : "
["host1value", "host2value", "host3value", "host4value"]
"number of value : 4"
于 2013-08-25T17:16:41.623 に答える