2017-07-04 8 views
1

私が達成しようとしている目標は、2つのボタン(btn 1またはbtn 2)の1つをクリックすると配列をリセット(空にする)し、ボタンの追加クリックされた値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>

私が直面しています問題:私はどちらか1か一度追加ボタンに続いてよりBTN 2 BTNクリックすると、アラートが番号を示し私がbtn1かbtn2をクリックした回数にかかわらず、私は警告2を1回だけ表示したいと思います。私が達成しようとしていることは達成可能だと思いますか?

+0

アラートを表示したくないとき?特定の条件はありますか? –

+0

btn1をクリックすると、空になる配列があります。その後、btn1は役に立たなくなります。 btn2をクリックすると、btn1が空になったのと同じ配列か、btn2で別の配列が空になりますか?異なる配列であるかどうかにかかわらず、btn2は無用になりました。これまでのところ私はそうですか? – zer00ne

+0

なぜadd_to_array()が必要ですか?なぜdocument.readyの内部にコードを追加しないのですか? – selvassn

答えて

2

.off('click')機能を使用すると、イベントを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").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>

ホープこれはあなたのonclickの関数が別の関数内であってはならない、

+0

良い解決策!! :) –

+0

残念ながら、私は関数add_to_arrayを保持したいので、これは私にとってはうまくいきません。 – Lucas

0

メイク以下の変更ができます。

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

他の2つのボタンの代わりにボタンの追加がクリックされた場合にのみ、値1を配列に追加することをお勧めします。 – Lucas

+0

@AvaLucas:クリックすると関数が呼び出されません..上記のチェックを –

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

私が直面しています問題:私はどちらか1またはBTN 2以上BTNクリックしたとき追加ボタンを1回押すと、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); 
} 
+0

他の2つのボタンの代わりにボタンの追加をクリックした場合にのみ、値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 []

関連する問題