请看一下这段代码,让我知道为什么我无法加载数组?
$(':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>
最佳答案
- 您的
var arr
是在复选框更改闭包内定义的
,这使其成为局部变量而不是全局范围- 您的复选框关闭缺失 })
- 您的数组将始终为空字符串,因为您没有将 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/