在加载/删除Checkbox到阵列时遇到问题

时间:2015-09-15 15:55:25

标签: javascript jquery

请看一下这段代码,让我知道为什么我无法加载阵列?



$(':checkbox[name=items]').on('change', function() {
    var arr = $(':checkbox[name=items]:checked').map(function() {
        return this.id;
    })
    .get();
  
$("#p-tap").on("click", function(){
    console.log(arr);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
 <input type="checkbox" name="items" value="Item_1" /> Lower Development Cost <br />
 <input type="checkbox" name="items" value="Item_2" /> Higher Energy Production<br />
 <input type="checkbox" name="items" value="Item_3" /> Further From Human Populations<br />
 <input type="checkbox" name="items" value="Item_3" /> Smaller Construction Footprint<br />
</div>
<button id="p-tap"> Print</button>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

  1. 您的Transaction已定义为var arr,这使其成为局部变量而非全局范围
    1. 您的复选框关闭已丢失})
    2. 您的数组将始终为空字符串,因为您没有将id属性的值设置为复选框
  2. 将您的代码更改为

    inside checkbox change closure

    &#13;
    &#13;
    var arr;
    $(':checkbox[name=items]').on('change', function() {
        arr = $(':checkbox[name=items]:checked').map(function() {
            return this.id;
        })
        .get()});
    
    &#13;
    var arr;
    $(':checkbox[name=items]').on('change', function() {
      arr = $(':checkbox[name=items]:checked').map(function() {
          return this.value;
        })
        .get();
    });
    
    $("#p-tap").on("click", function() {
      console.log(arr);
      $('#result').text(arr);
    });
    &#13;
    &#13;
    &#13;