Javascript array.push() 不添加而是替换
Javascript array.push() do not add but replace it
我有一些样式为 bootstrapSwitch
的复选框。
我写了一个脚本,当 bootstrapSwitch state
为真时,必须将复选框的值添加到数组中。
这是我的代码:
$('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
数组总是有一个索引。
你能告诉我这是为什么吗?
提前致谢
var s = new Array();
在处理函数之外定义它。
它始终为 1,因为您每次都在重新创建它。
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)
});
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)
});
只要在外面声明数组即可。 User [] 而不是 new Array() 因为它更快。
我有一些样式为 bootstrapSwitch
的复选框。
我写了一个脚本,当 bootstrapSwitch state
为真时,必须将复选框的值添加到数组中。
这是我的代码:
$('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
数组总是有一个索引。
你能告诉我这是为什么吗?
提前致谢
var s = new Array();
在处理函数之外定义它。
它始终为 1,因为您每次都在重新创建它。
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)
});
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)
});
只要在外面声明数组即可。 User [] 而不是 new Array() 因为它更快。