javascript - 向数组添加和删除复选框值不起作用

标签 javascript jquery arrays checkbox

我之前已经这样做过,但由于某种原因我当前的实现不起作用。

我有一些复选框,单击时,我希望将该值放入数组中。当再次单击该复选框时,我想删除该值。

HTML:

<div class="fieldwrap form-filters">
  <label for="filter0" class="icon-text checkbox">
      <input type="checkbox" id="filter0" name="filter0" value="Coast" class="hidden" />
    Coast</label>
  <label for="filter1" class="icon-text checkbox">
      <input type="checkbox" id="filter1" name="filter1" value="Great views" class="hidden" />
    Great views</label>
  <label for="filter2" class="icon-text checkbox">
      <input type="checkbox" id="filter2" name="filter2" value="Historic" class="hidden" />
    Historic</label>
  <label for="filter3" class="icon-text checkbox">
      <input type="checkbox" id="filter3" name="filter3" value="Moorland" class="hidden" />
    Moorland</label>
  <label for="filter4" class="icon-text checkbox">
      <input type="checkbox" id="filter4" name="filter4" value="Wildlife" class="hidden" />
    Wildlife</label>
  <label for="filter5" class="icon-text checkbox">
      <input type="checkbox" id="filter5" name="filter5" value="Woodland" class="hidden" />
    Woodland</label>
</div>

JS:

var filter_options = [];

$('.form-filters input:checkbox').click(function() {

    var name = $(this).val().trim();
    var index = filter_options.indexOf(name);
    if (index > -1) {
        filter_options = filter_options.slice(index, 1);
        console.log('Remove: '+name+' at index: '+index);
    } else {
        filter_options.push(name);
        console.log('Add: '+name);
    }

    $('#result').html(filter_options.join('; '));
    console.log(filter_options);

});

演示: http://jsfiddle.net/WTzKR/873/

由于某种原因,它似乎随机删除了这些值,但似乎总是添加它们。

我做错了什么?

最佳答案

只需更改:

filter_options = filter_options.slice(index, 1);

filter_options.splice(index, 1);

在你的if中 block 。

splice就是您正在寻找的。

关于javascript - 向数组添加和删除复选框值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447780/

相关文章:

javascript - 如何使用 jQuery 或 Prototype 获取字符串(而不是 DOM)中的 HTML 标签的内部 HTML 值?

c++ - C++使用参数返回指针-不同指针类型之间的比较缺少强制转换

javascript - MongoDB/ meteor : Add unique ID to every array element

javascript - 如何 grep 这个 Javascript 对象数组?

ios - 错误 : index beyond bounds

javascript - 使用构造函数弹跳动画?

javascript - 匹配小时-分钟-秒 (hms) 持续时间字符串

javascript - jquery 表折叠在 ie11.035 和 firefox 46.0.1 上不起作用

jquery - 使用.animate()宽度向右滑动

javascript - jQuery 中奇怪的闪烁切换