簡體   English   中英

為什么我的按鈕需要單擊兩次才能使事件處理程序第一次工作,但此后只需單擊一次?

[英]Why does my button need to be clicked twice for the event handler to work the first time, but thereafter just once?

我希望訪問者能夠展開/折疊某些部分,並且正在使用:

<input onclick="return toggleDiv('xx')" 
       type="button" 
       class="button" 
       value="click here to expand/collapse"/>

在我有這個功能:

function toggleDiv(a){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.display=="none"){
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}

第一次單擊按鈕不起作用,后續單擊(在任何按鈕上)工作正常。

這里有相關對話: 按鈕需要點擊兩次才能觸發功能

但我不明白答案(太技術性;-),有人可以幫忙解釋一下嗎?

我希望訪問者能夠擴展/折疊某些部分,並且正在使用:

<input onclick="return toggleDiv('xx')" 
       type="button" 
       class="button" 
       value="click here to expand/collapse"/>

並且在我有功能:

function toggleDiv(a){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.display=="none"){
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}

第一次單擊一個按鈕不起作用,隨后的單擊(在任何一個按鈕上)都可以正常工作。

這里有相關的對話: 需要單擊兩次按鈕才能觸發功能

但我不明白答案(技術性太強;-),有人可以幫忙解釋一下嗎?

我希望訪問者能夠擴展/折疊某些部分,並且正在使用:

<input onclick="return toggleDiv('xx')" 
       type="button" 
       class="button" 
       value="click here to expand/collapse"/>

並且在我有功能:

function toggleDiv(a){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.display=="none"){
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}

第一次單擊一個按鈕不起作用,隨后的單擊(在任何一個按鈕上)都可以正常工作。

這里有相關的對話: 需要單擊兩次按鈕才能觸發功能

但我不明白答案(技術性太強;-),有人可以幫忙解釋一下嗎?

我希望訪問者能夠擴展/折疊某些部分,並且正在使用:

<input onclick="return toggleDiv('xx')" 
       type="button" 
       class="button" 
       value="click here to expand/collapse"/>

並且在我有功能:

function toggleDiv(a){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.display=="none"){
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}

第一次單擊一個按鈕不起作用,隨后的單擊(在任何一個按鈕上)都可以正常工作。

這里有相關的對話: 需要單擊兩次按鈕才能觸發功能

但我不明白答案(技術性太強;-),有人可以幫忙解釋一下嗎?

我希望訪問者能夠擴展/折疊某些部分,並且正在使用:

<input onclick="return toggleDiv('xx')" 
       type="button" 
       class="button" 
       value="click here to expand/collapse"/>

並且在我有功能:

function toggleDiv(a){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.display=="none"){
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}

第一次單擊一個按鈕不起作用,隨后的單擊(在任何一個按鈕上)都可以正常工作。

這里有相關的對話: 需要單擊兩次按鈕才能觸發功能

但我不明白答案(技術性太強;-),有人可以幫忙解釋一下嗎?

我希望訪問者能夠擴展/折疊某些部分,並且正在使用:

<input onclick="return toggleDiv('xx')" 
       type="button" 
       class="button" 
       value="click here to expand/collapse"/>

並且在我有功能:

function toggleDiv(a){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.display=="none"){
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}

第一次單擊一個按鈕不起作用,隨后的單擊(在任何一個按鈕上)都可以正常工作。

這里有相關的對話: 需要單擊兩次按鈕才能觸發功能

但我不明白答案(技術性太強;-),有人可以幫忙解釋一下嗎?

我希望訪問者能夠擴展/折疊某些部分,並且正在使用:

<input onclick="return toggleDiv('xx')" 
       type="button" 
       class="button" 
       value="click here to expand/collapse"/>

並且在我有功能:

function toggleDiv(a){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.display=="none"){
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}

第一次單擊一個按鈕不起作用,隨后的單擊(在任何一個按鈕上)都可以正常工作。

這里有相關的對話: 需要單擊兩次按鈕才能觸發功能

但我不明白答案(技術性太強;-),有人可以幫忙解釋一下嗎?

我知道這是一個舊線程,但為了有點有用(為了改變),你總是可以在函數中調用當前顯示。 或者,您可以定義加載時,但鑒於按鈕可能不會被點擊,我更願意通過 addEventListener() 來完成。

document.getElementById("someID1").addEventListener("click", hideOpen);

function hideOpen() {
  var x = document.getElementById("someID2");
  x.style.display = window.getComputedStyle(document.getElementById("someID2")).display;
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  }
}

有效地加載JS,然后當一個元素被點擊(someID1)時,該函數將定義變量X,分配當前計算的style.display,然后測試它是塊還是無。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM