从数组

时间:2016-01-10 05:33:36

标签: javascript jquery arrays

我有一个函数可以获取未检查的列表中的所有项目,并从中创建一个新数组。

// Allows user to remove keywords from the locaStorage
$('#clearChecked').click(function() {
  currentArray = [];
  $('.check').each(function() {
    var $curr = $(this);
    if (!$curr.is(':checked')) {
      var value = $curr.parent().text();
      currentArray.push(value);
      localStorage.setItem('keyWords', JSON.stringify(currentArray));
      loadKeyWords();
    } else {
      $curr.parent().remove();
    }
  });
});

问题是,如果我检查所有项目,它不会删除任何。或者,如果剩下一个项目,它不会让我删除最后一项。

但只要剩下一件物品,它就可以让我删除任意数量的物品。

如何更改我的功能以允许我删除数组中的最后一项或所有项目(如果已选中)。

我正在输出这样的数组,

// Generate random id for id of keywords
function guidGenerator() {
    var S4 = function() {
       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
    };
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}

 var x = guidGenerator();
      $('#keyWords').prepend('<li class="list-group-item" data-style="button"><input id="'+ x +'" class="check" name="check" type="checkbox"><label for="'+ x +'">'+localArray[i]+'</label></li>'); 

在html文件中

<button id="clearChecked">Clear Checked Items</button>

<ul id="keyWords">
    <li class="list-group-item" data-style="button">
        <input id="4667ac55-5de4-df61-9b82-9b50c728adea" class="check" name="check" type="checkbox">
        <label for="4667ac55-5de4-df61-9b82-9b50c728adea">qedfeqdeqdeq</label>
    </li>
</ul> 

2 个答案:

答案 0 :(得分:1)

只需在复选框中点击事件添加代码:

print df

    game team  role  hw  aw  year  wins  expanding_mean
0      1    A  home   0   1  2000     0             NaN
1      1    B  away   0   1  2000     1             NaN
2      2    B  home   1   0  2000     1        1.000000
3      2    A  away   1   0  2000     0        0.000000
4      3    B  home   0   0  2000     0        1.000000
5      3    A  away   0   0  2000     0        0.000000
6      4    A  home   1   0  2000     1        0.000000
7      4    B  away   1   0  2000     0        0.666667
8      5    B  home   0   1  2001     0             NaN
9      5    A  away   0   1  2001     1             NaN
10     6    A  home   1   0  2001     1        1.000000
11     6    B  away   1   0  2001     0        0.000000
12     7    A  home NaN NaN  2001   NaN        1.000000
13     7    B  away NaN NaN  2001   NaN        0.000000

答案 1 :(得分:0)

我解决了这个问题(至少在我身边):

  1. 将输入的ID和标签的for更改为不带任何空格的唯一字符串
  2. 在您发布的jQuery下面添加了});,因为它没有关闭主要的原始函数。

    <button id="clearChecked">Clear Checked Items</button>
    
    <ul id="keyWords">
    <li class="list-group-item" data-style="button">
        <input id="link_0" class="check" name="check" type="checkbox">
        <label for="link_0">I am a link</label>
    </li>
    <li class="list-group-item" data-style="button">
        <input id="link_1" class="check" name="check" type="checkbox">
        <label for="link_1">I am a link</label>
    </li>
    <li class="list-group-item" data-style="button">
        <input id="link_2" class="check" name="check" type="checkbox">
        <label for="link_2">I am a link</label>
    </li>
    </ul>
    
    $('#clearChecked').click(function() {
      currentArray = [];
      $('.check').each(function() {
        var $curr = $(this);
        if (!$curr.is(':checked')) {
          var value = $curr.parent().text();
          currentArray.push(value);
          localStorage.setItem('keyWords', JSON.stringify(currentArray));
          loadKeyWords();
        } else {
          $curr.parent().remove();
        }
      }); // only closing the $('.check').each(function() { function
      }); // closing the $('#clearChecked').click(function() { function
    
  3. Check out this fiddle to see it working

    编辑:

    关于您发布的GUID ...修复它。

    function makeid()
    {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    
    for( var i=0; i < 5; i++ )
        text += possible.charAt(Math.floor(Math.random() * possible.length));
    
    return text;
    }
    

    Credit for makeid function goes to csharptest.det