单击按钮时未正确清空数组值

时间:2017-07-04 05:44:44

标签: javascript jquery arrays

我想要实现的目标是,当单击两个按钮(btn 1或btn 2)中的一个时,阵列需要重置(清空),当点击按钮添加时,需要将值1推送到数组。这是我到目前为止所得到的:

$(document).ready(function(){
   var array = []
   $("#btn_1").click(function(){
       array = []
       add_to_array(array);
   })
   $("#btn_2").click(function(){
       array = []
       add_to_array(array);
   })   
})

function add_to_array(array){
  
    $("#add").click(function(){
    
     array.push(1)
     alert(array)
   })   
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn_1">
empty array: btn 1
</button>

<button id="btn_2">
empty array: btn 2
</button>

<button id="add">
Add 
</button>

我面临的问题:当我单击btn 1或btn 2多次,然后单击添加按钮时,警告会显示我点击btn1或btn 2的次数。

我正在寻找的是,无论我点击btn 1或btn2多少次,我都希望警报2只显示一次。你认为我想要实现的目标是可以实现的吗?

6 个答案:

答案 0 :(得分:0)

您可以使用.off('click')功能仅将事件绑定一次以添加按钮。

&#13;
&#13;
$(document).ready(function(){
   var array = []
   $("#btn_1").click(function(){
       array = []
       add_to_array(array);
   })
   $("#btn_2").click(function(){
       array = []
       add_to_array(array);
   })   
})

function add_to_array(array){
  
    $("#add").off('click').click(function(){    
     array.push(1)
     alert(array)
   })   
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn_1">
empty array: btn 1
</button>

<button id="btn_2">
empty array: btn 2
</button>

<button id="add">
Add 
</button>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这就是你需要的,我刚刚在jquery中修改了你的代码,只要空按钮点击,它就会清空数组,只有当按下添加按钮时它才会向数组和警报添加1。

&#13;
&#13;
array = [];
$(document).ready(function(){ 
    $("#btn_1").click(function(){ 
        array = []
      }) 
    $("#btn_2").click(function(){ 
        array = []
      })
    $("#add").click(function(){ 
        array.push(1) 
        alert(array) 
      })
  }) 
  
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn_1">
empty array: btn 1
</button>

<button id="btn_2">
empty array: btn 2
</button>

<button id="add">
Add 
</button>
&#13;
&#13;
&#13;

希望这有帮助

答案 2 :(得分:0)

进行以下更改,您的onclick功能不应该在另一个功能中。

$(document).ready(function(){
   var array = []
   $("#btn_1").click(function(){
       array = []
       //add_to_array(array);
       alert('Array emptied')
   })
   $("#btn_2").click(function(){
       array = [];
       alert('Array emptied')
       //add_to_array(array);
   })   


function add_to_array(array){
  
   
    
     array.push(1)
     alert(array)
   
}


 $("#add").click(function(){
    
      add_to_array(array);
   })   

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button id="btn_1">
empty array: btn 1
</button>

<button id="btn_2">
empty array: btn 2
</button>

<button id="add">
Add 
</button>

答案 3 :(得分:0)

试试这个

<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
   var array = []
   $("#btn_1").click(function(){
       array = [];
       add_to_array(array)
   })
   $("#btn_2").click(function(){
       array = [];
       add_to_array(array)
   })
  $("#add").click(function(){
     array = [];
     array.push(1);
     alert(array);
   })   
})

function add_to_array(array){
     array.push(1);
}
</script>
<body>
<button id="btn_1">
empty array: btn 1
</button>

<button id="btn_2">
empty array: btn 2
</button>

<button id="add">
Add 
</button>
</body>
</html>

希望这会有所帮助......

答案 4 :(得分:0)

  

我面临的问题:当我单击btn 1或btn 2多次,然后单击添加按钮时,警告会显示我点击btn1或btn 2的次数。

每次点击.btn_1.btn_2时,都会调用函数add_to_array(),并且每次都在#add上定义一个新的事件监听器。 另外,您可以在同一个功能中将1推入阵列。 click事件应该调用你的函数,而不是相反。

$(document).ready(function(){
   var array = [];
   $("#btn_1").click(function(){
       empty_array(array);
   });
   $("#btn_2").click(function(){
       empty_array(array);
   });
   $("#add").click(function(){
       add_to_array(array);
       alert(array);
   })   
});

function empty_array(array) {
    array = [];
}

function add_to_array(array){
    array.push(1);
}

答案 5 :(得分:-1)

阵列可以通过多种方式清空:

var arr =[];
arr.push(1);
//to empty an array
console.log(arr[0]);
arr.length=0;
console.log(arr);

输出将是:

  

1 []