-1

同じクラスの一連のチェックボックスがあります。コレクションと同じクラスのすべてのチェックボックスを取得し、それらの ID とチェック済みステータスを抽出したいと考えています。しかし、私が見たクラスによる選択の例はすべて、そのクラスのすべての要素に単一の変更を適用するだけです。そのクラスですべてのチェックボックス要素のコレクション/配列を取得して、それらを反復処理できるようにする必要があります。

わかりました、いくつかの提案を試しましたが、うまくいきませんでした。これにより、IE8 で Object Expected エラーがスローされます。

var checkboxes = document.querySelectorAll("input[type='checkbox'].chkRoles");

これにより、チェック対象に関係なく、毎回空の配列が返されます。

    var mandatoryRoleIDs = [];

    $('input.chkRoles[type="checkbox"]').each(function (i, checkbox)
    {
        if ($(checkbox).attr('checked'))
            mandatoryRoleIDs.push($(checkbox).attr('id'));
    });
4

2 に答える 2

2

あなたの質問はjQueryでタグ付けされているので、jQueryの each() 関数でそれを行う方法は次のとおりです。

$('input.someClass[type="checkbox"]').each(function(i,el){
    var $this = $(el),
        id = $this.attr('id'),
        checked = $this.attr('checked');
    /* do stuff with id and checked */
});
于 2013-06-11T18:19:52.757 に答える
2
var checkboxes = document.getElementsByClassName('classname');

次に、それを繰り返して、必要なことを行います。

for(var i = 0; i < checkboxes.length; i++) {
    var current = checkboxes[i];
    // stuff on current
}

この単純なケースでは jQuery を使用する必要はなくquerySelectorAll、古いブラウザーでは完全にはサポートされていません。バニラJSはそれを行うための最良の方法です!

IE8(いまいましいMicrosoft)をサポートする必要があるので、次のようにする必要があります:

var inputs = document.getElementsByTagName('input'),
    className = "classname";
for (var i = 0; i < inputs.length; i++) {
    var current = inputs[i];
    if (current.type !== 'checkbox' || current.className.indexOf(className) === -1) continue;
    //do stuff with current
}

このスニペットの実際のJSFiddle の例を参照してください。

于 2013-06-11T18:18:07.467 に答える