javascript - 将复选框加载/删除到数组时出现问题

标签 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>

最佳答案

  1. 您的var arr是在复选框更改闭包内定义的,这使其成为局部变量而不是全局范围
  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>

关于javascript - 将复选框加载/删除到数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32590526/

相关文章:

javascript - 如何使用 HERE Maps API 实现交互式 map 并调整其大小?

javascript - 多下拉 javascript 只能工作一次

javascript - 无法从 .json 文件加载 json 数据

javascript - xdsoft 的日期时间选择器显示不正确的时间选项

javascript - 获取主干中的按钮值

jquery - 单击 jQuery 中的链接时如何防止模糊()运行?

javascript - 如何使用 LiveAddress jquery 插件验证默认值?

javascript - Twitch、YouTube、Twitter 和 Reddit 等网站如何在不实际重新加载的情况下加载页面并更改 URL?

php - 需要帮助格式化 PHP、javascript 树控件中目录列表的结果

html - 将图像从 html 表单发送到 mvc 4 Controller