Search code examples
javascriptarraysbootstrap-switch

Javascript array.push() do not add but replace it


I have some checkboxes styled with bootstrapSwitch. I wrote a script that have to add value of checkbox to an array when bootstrapSwitch state is true.

This is my code :

$('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)
});

But surprisingly push method replace the value and my s array always have one index.

Would you please let me know why is that?

Thanks in Advance


Solution

  • var s = new Array();
    

    Define this out of the handler function.

    It's always 1 because you're recreating it everytime.