1

チェックボックスを選択している間はチェックボックスのリストがあり、値を配列に追加する必要があり、チェックを外している間は配列からそれを削除する必要があります。

次のコードを使用しています。しかし、チェックを外している間は削除されていません

<tr><td class="tdstyleSelect"><input type="checkbox" name="joblist" onclick="toNfroVmps(this.id);" id="' + i + '" checked>

var toNfroVmps = function(id) {
    if($('#' + id).is(':checked')) 
        elementIds.push(id);   
    else    
        delete elementIds[elementIds.indexOf(id)]
}
4

2 に答える 2

9

Array.spliceを使用します(ところで、これはネイティブ JS メソッドです)。

var index = elementIds.indexOf(id);
if (index !== -1) {
  elementIds.splice(index, 1);
}

ID に対応する各キーと、true または false のいずれかの値を使用して、ハッシュ (代わりに、または単純な配列) を使用してデータを保存することを検討することもできます。

var elementIds = {
  el1: true,
  el2: true,
  el3: false
  // ...
};

このようにして、要素の追加/削除がさらに簡単になります:

elementIds[id] = $('#' + id).is(':checked'); // either true or false

...そして、さまざまなjQueryリスト内包関数を使用して、このハッシュを配列として処理することができます。たとえば、チェックされたすべての要素の ID を収集する方法は次のとおりです。

var checkedIds = $.grep(elementIds, function(el) { return el; });
于 2013-09-12T06:47:00.247 に答える
1

spliceメソッドを使用して、配列項目を削除できます。

var toNfroVmps = function(id) 
{
    if($('#' + id).is(':checked')) 
        elementIds.push(id);   
    else
    {
        // Select the index
        var i = elementIds.indexOf(id);

        // Check if the index exists, to prevent any errors that might happen
        // If exists, delete
        if(i !== -1)
            elementIds.splice(i, 1);

    }
}
于 2013-09-12T06:49:46.020 に答える