代码之家  ›  专栏  ›  技术社区  ›  snack_overflow Y.Puzyrenko

从javascript数组中删除动态添加的变量

  •  0
  • snack_overflow Y.Puzyrenko  · 技术社区  · 7 年前

    我正在开发一个项目,在这个项目中,我生成了一些复选框,其中的值基于PHP变量,如下所示:

    <input type="checkbox" value="<?php echo $example; ?>">
    

    然后,我希望能够获取单击输入的值并将其添加到JS数组中,这样我就可以发布任何选中复选框中的所有值。

    这些值添加到我的JS数组中没问题,但是当我试图从数组中删除它们时,我遇到了困难。如果数组中有一个单独的元素,那么它将被很好地删除;如果有多个元素,那么我的代码似乎只删除最近添加的元素。

    我认为问题出在 value_array.splice(index, 1); 线。

    $(document).on('click', '.example-input', function() {
    
        input = $(this).find('input');
    
        if(example_condition == true) {
            $(input).prop( 'checked', true );
            value = $(input).val();
            value_array.push(value);
            index = value_array.indexOf(value);
            is_checked = true;
        } else {
            $(input).prop('checked', false);
            is_checked = false;
        }
    
        if(is_checked == false) {
            if(index !== -1) {
                value_array.splice(index, 1);
            }
        }
    
        // Post JS array
    });
    

    希望有人能给我指明正确的方向。

    我还尝试实现这里给出的答案: How do I remove a particular element from an array in JavaScript? ,但当数组中有多个元素时,它似乎不起作用。

    谢谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Tom G    7 年前

    var value_array;
    $(document).ready(function() {
       updateValueArray();
       $(document).on('change', '.myCheck', function() {
          updateValueArray();
          console.log(value_array);
      });
    });
    
    
    function updateValueArray() {
      value_array = [];
      $('.myCheck:checked').each(function() {
          value_array.push($(this).attr("value"));
      });
    }
    <html>
      <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
      </head>
      <body>
         <input class="myCheck" type="checkbox" value="1">
         <input class="myCheck" type="checkbox" value="2">
         <input class="myCheck" type="checkbox" value="3">
         <input class="myCheck" type="checkbox" value="4">
         <input class="myCheck" type="checkbox" value="5">
         <input class="myCheck" type="checkbox" value="6">
         <input class="myCheck" type="checkbox" value="7">
      </body>
    </html>