2016-07-18 10 views
-2

ボタンをクリックするだけで関数を読み込もうとしていますが、値によっては別のメソッドを呼び出して別のことをします。Javascriptのonclick関数はif文をオーバーライドしますか?

私は値が "セット"に設定されているが、それでもifステートメントに入り、removeAttributeメソッドをコミットすることを知っています。

if (change == "set"){ 
      document.getElementById('close').setAttribute("data-dismiss", "modal"); 
      $('#\\#myModal').modal({ keyboard: false, backdrop: 'static' }); 
      $('#\\#myModal').modal('show'); 
      createPicker(); 
      } 
      else if (change == "search"){ 
       document.getElementById('close').onclick = function(){ 
        document.getElementById('close').removeAttribute("data-dismiss"); 
        hideFields(); 
       } 
      } 

値が一致しないときに他のステートメントに入るのを止める方法を知っている人は、大いに感謝しています。

+3

'change'は本当にその後、' else'が実行されません ' "設定"'の文字列に等しい場合。 – Pointy

+0

詳細を表示する必要があります。それがあなたが思っているものかどうかを判断するために変化がどのように設定されているかを本当に見る必要があります。 if文の前にコンソールログを記録して確認してください。 –

+0

一度イベントを添付すると、イベントを削除するまで常にイベントが添付されることに気付きますか? – epascarello

答えて

2

あなたはすでにonclickを設定していると思いますが、setの状態でもonclickがクリアされている必要があります。

if (change == "set"){ 
 document.getElementById('close').removeEventListener("onclick"); 
 document.getElementById('close').setAttribute("data-dismiss", "modal"); 
     $('#\\#myModal').modal({ keyboard: false, backdrop: 'static' }); 
     $('#\\#myModal').modal('show'); 
     createPicker(); 
     } 
     else if (change == "search"){ 
      document.getElementById('close').onclick = function(){ 
       document.getElementById('close').removeAttribute("data-dismiss"); 
       hideFields(); 
      } 
     } 
+0

ありがとうございました!それは完璧に働いた。 – user3204820

関連する問題