-1

こんにちは、私は以下の HTML コードを持っており、トグル チェックボックスで、すべてのチェックボックスをチェックするはずのこの JavaScript 関数を起動します。スクリプトが正しく機能していません。フィドル http://jsfiddle.net/eBFwq/

HTML

<SPAN class="Checkbox">

<INPUT id="ctl00_PlaceHolderMain_Chk_1" CHECKED="check" type="checkbox" name="ctl00$PlaceHolderMain$Chk_1">

<LABEL for="ctl00_PlaceHolderMain_Chk_1">Check 1</LABEL>

</SPAN>

Javascript

function toggle(source) {
    checkboxes = document.getElementsByClassName('Checkbox');
    alert(checkboxes.length);
    for (var i = 0, n = checkboxes.length; i < n; i++) {
        checkboxes[i].childNodes[0].checked = source.checked;
    }

}

4

3 に答える 3

1

ここでの問題は、最初の子ノードがチェックボックスではないという事実です。テキストノードがあります。

console.log(checkboxes[i].childNodes[0]);

これは

<TextNode textContent="\n\n">

生成されたコードだと言ったのでgetElementByTagName()、childNodes の特定の順序に依存する代わりに使用する必要があります。

checkboxes[i].getElementsByTagName("input")[0].checked = source.checked;
于 2013-10-03T13:03:28.283 に答える
0

なぜ jquery を使わないのですか? 質問のタグとしてjqueryを選択していないことは知っていますが、これを使用することを検討してください。これにより、子ノードの取得が非常に簡単になります。私はJqueryの方法で行き、次のようなものを作りました:

$("input").click(function(){
    var checkboxes = $('.Checkbox').children();
    console.log(checkboxes.length);
    for (var i = 0; i < checkboxes.length; i++) {
        checkboxes[i].checked = "checked";
    }

});

ここで作業フィドルを参照してください:http://jsfiddle.net/bbweR/2/

于 2013-10-03T13:24:28.747 に答える