2017-07-04 65 views
1

我試圖實現的目標是,當兩個按鈕(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多少次,我希望警報二隻出現一次。你認爲我想達到的目標是可以實現的嗎?

+0

你想什麼時候警報露面?有什麼特定的情況嗎? –

+0

單擊btn1時,會有一個數組被清空,此後btn1無用。當單擊btn2時,它是否與btn1清空或btn2清空不同數組的相同數組?無論它是否是一個不同的陣列,btn2現在都是無用的。我到目前爲止是否正確? – zer00ne

+0

爲什麼你需要add_to_array()。爲什麼不把代碼添加到document.ready中? – selvassn

回答

2

您可以使用.off('click')函數來綁定您的事件只需添加一次按鈕。

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

0

這是你需要什麼,我剛修改的代碼jQuery中,每當空點擊按鈕,它倒空數組,只有當添加按鈕被按下它增加了1陣列和警報。

array = []; 
 
$(document).ready(function(){ 
 
    $("#btn_1").click(function(){ 
 
     array = [] 
 
     }) 
 
    $("#btn_2").click(function(){ 
 
     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>

希望這有助於

+0

好解決方案! :) –

+0

不幸的是,這不適合我,因爲我想保持函數add_to_array。 – Lucas

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>

+0

我更喜歡值1添加到陣列只有當點擊按鈕添加而不是其他兩個按鈕 – Lucas

+0

@AvaLucas:然後不要調用該功能點擊..check我編輯上面 –

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> 

希望這有助於...

+0

不幸的是這不適用於我,因爲我想保留函數add_to_array – Lucas

+0

檢查編輯好的代碼。 –

0

我面對的問題:當我單擊BTN 1或2 BTN更多比一次按下添加按鈕,警報顯示了我點擊btn1或btn 2的次數。

你叫你的函數add_to_array()每次點擊.btn_1.btn_2它定義在每個時間#add一個新的事件監聽器。 再加上你將1推入你的數組中相同的功能。 點擊事件應該調用你的函數,而不是其他方式。

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

我更喜歡將值1添加到數組中,只有當點擊按鈕添加而不是其他兩個按鈕時 – Lucas

+0

不知道我理解您的評論。 1僅在您點擊#add時添加 – Viandoks

-1

陣列可以以多種方式被清空:

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

輸出將是:

1]