1

ページの読み込み時に動的に作成され、次のように記述される一連のチェックボックスがあります。

<input type='checkbox' name='quicklinkscb' id='quicklinkscb_XX'/>

ここで、XX はデータベースからのアイテムの ID を表します。

すべてのチェックボックスについて、javascript を介してページを解析できるようにしたいと考えています。

ID を見つけて、そこから「quicklinksscb_」を取り除きます。

if(checkbox is checked)
{
  add to add list
}
else
{
 add to remove list
}

チェックボックスリストを介してこれを行うことはできません。これをすべてクライアント側で行いたい

誰かが光を当てることができますか

4

2 に答える 2

4
for(var i = 0; i < document.forms.length; i++) {
    for(var j = 0; j < document.forms[i].elements.length; j++) {
        var elem = document.forms[i].elements[j];
        if(elem.type == 'checkbox')
            var tag = elem.getAttribute('id');
            tag.replace(/^quicklinkscb_/, '');
            if(elem.checked)
                add_to_add_list(tag);
            else
                add_to_remove_list(tag);
    }
}

jQuery では非常に簡単です。

$(':checkbox').each(function() {
    var tag = $(this).attr('id');
    tag.replace(/^quicklinkscb_/, '');
    if($(this).attr('checked'))
        add_to_add_list(tag);
    else
        add_to_remove_list(tag);
});
于 2009-07-26T00:24:15.900 に答える
1

カオスによって示されるjQueryコードサンプルがPOJサンプルよりも短くて読みやすいことには異論はありませんが、このアプリケーションだけにマルチKbjQueryライブラリを使用することの正当性に疑問を投げかけます。

私のPOJバージョンは、次のようにadityaの提案に従います。

var 
  add_list = [],
  del_list = [];

for (var inputs = document.getElementsByTagName ('input'), cb, i = inputs.length;
     i--;)
  if ((cb = inputs[i]).type === 'checkbox') {
    cb.id = cb.id.replace (/^quicklinkscb_/, '');
    (cb.checked ? add_list : del_list).push (cb);
  }

チェックボックスIDを変更してから、リストを追加/削除するために要素を追加するように求める元の質問を読みました。カオスの実装に相当するものは次のとおりです。

for (var inputs = document.getElementsByTagName ('input'), cb, i = inputs.length;
         i--;)
  if ((cb = inputs[i]).type === 'checkbox')
    (cb.checked ? add_list : del_list).push (cb.id.replace ((/^quicklinkscb_/, '')));
于 2009-07-26T11:51:25.430 に答える