繁体   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