在加载/移除复选框到数组上有问题

Having issue on Loading/Removing Checkbox to Array

本文关键字:数组 有问题 复选框 加载      更新时间:2023-09-26

请看看这段代码,让我知道为什么我不能加载数组?

$(':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>

  1. 您的var arr被定义为inside checkbox change closure,这使其成为局部变量而不是全局作用域
  2. 您的复选框关闭丢失})
  3. 你的数组将永远是空字符串,因为你没有为id属性设置值复选框

将代码改为

var arr;
$(':checkbox[name=items]').on('change', function() {
    arr = $(':checkbox[name=items]:checked').map(function() {
        return this.id;
    })
    .get()});

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);
});
<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>
<br/>
Result:
<div id="result">
  
  </div>