3

次のような HTML があります。

<input type="checkbox" name="choice_shrd_with_me" id="choice{{ forloop.counter }}" value="{{ choice.file_name }}" />

Javascriptで次のように、配列内のチェックされた要素のみを取得しようとしています:

var choices = [];
         for (var i=0;i<document.getElementsByName('choice_shrd_with_me').length;i++){
             choices.push(document.getElementsByName("choice_shrd_with_me")[i].value);
         }

上記は、チェックボックスがチェックされているかどうかに関係なく、すべての値を取得します。チェックボックスがチェックされている値のみを取得したい。どうやってやるの?

4

5 に答える 5

4

IE < 9 の場合

function getCheckedByName(name){
    var chks = document.getElementsByName(name);
    var results = [];
    for(var i = 0; i < chks.length; i++){
        chks[i].checked ? results.push(chks[i]):"";
    }
    return results;
}

最新のブラウザ向け

function getModernCheckedByName(name){
    return  Array.prototype.slice.call(document.getElementsByName(name)).filter(function(e){
        return e.checked;
    });
}

実施例

http://jsfiddle.net/yMqMf/

于 2013-07-02T10:00:50.130 に答える
1

その JQuery バージョンは非常に洗練されています。

var choices = [];
$("input[name='choice_shard_with_me']:checked").each(function() {
    choices.push($(this).attr('value'));
});

:checked (達成したいことの非常によく似た例)

各()

属性()

于 2013-07-02T10:03:40.737 に答える