我有一些用bootstrapSwitch
设置样式的复选框。
我编写了一个脚本,当bootstrapSwitch state
为真时,必须在数组中添加checkbox的值。
这是我的代码:
$('input[name^=skill]').on('switchChange.bootstrapSwitch', function (event, state) {
//alert(state);
//var s = [];
var s = new Array();
if( state === true )
{
//var value = $(this).val();
s.push( $(this).val() );
console.log(s);//(value)
}
console.log(s);//(value)
});
但令人惊讶的是push
方法替换了值,而我的s
数组总是有一个索引。
请你告诉我为什么会这样?
提前致谢
答案 0 :(得分:3)
var s = new Array();
从处理程序函数中定义它。
它始终是1,因为您每次都会重新创建它。
答案 1 :(得分:2)
var s = new Array();// this line should be out side of function. so it will not be new object everytime
所以试试这个
var s = new Array();// this line should be here. so it will not be new object everytime
$('input[name^=skill]').on('switchChange.bootstrapSwitch', function (event, state) {
//alert(state);
//var s = [];
var s = new Array();
if( state === true )
{
//var value = $(this).val();
s.push( $(this).val() );
console.log(s);//(value)
}
console.log(s);//(value)
});
答案 2 :(得分:1)
var s = [];
$('input[name^=skill]').on('switchChange.bootstrapSwitch', function (event, state) {
//alert(state);
//var s = [];
if( state === true )
{
//var value = $(this).val();
s.push( $(this).val() );
console.log(s);//(value)
}
console.log(s);//(value)
});
只需在外面声明数组。用户[]代替新的Array(),因为它更快。