Onclick javascript函数仅在第二次单击时起作用

M. *_*lad 3 html javascript css events click

function toggleDivFunction() {
  var arrowElement = document.getElementById("arrowRight");
  var showElement = document.getElementById("dropdownText");
  arrowElement.onclick = function() {
    if (showElement.style.display == 'none') {
      showElement.style.display = 'block';
      document.getElementById("arrowRight").style = "transform: rotate(+90deg)";
    } else {
      showElement.style.display = 'none';
      document.getElementById("arrowRight").style = "transform: rotate(0deg)";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
<p class="dropdownHeader">TOP <span id="arrowRight" class="arrowRight" onclick="toggleDivFunction();"> > </span></p>
<div class="dropdownText" id="dropdownText"><p>TEXT TO BE SHOWN</p></div>
Run Code Online (Sandbox Code Playgroud)

问题是dropdownTextdiv只在第二次点击arrowRight跨度后出现.我已经将其视为一个常见问题,但仍未能找到解决方案.任何帮助,将不胜感激.

Mih*_*nut 5

您不需要在另一个事件处理程序中bind使用click事件处理click程序.您必须使用单个click事件处理程序.

show/hide功能属于第二个click事件处理程序,这首先是binded您的spanDOM元素click.

function toggleDivFunction () {
   var arrowElement = document.getElementById ("arrowRight");
   var showElement = document.getElementById ("dropdownText");
   if(showElement.style.display == 'none')
   {
      showElement.style.display = 'block'; 
      document.getElementById("arrowRight").style = "transform: rotate(+90deg)";
   }
   else
   {
      showElement.style.display = 'none';
      document.getElementById("arrowRight").style = "transform: rotate(0deg)";
   }
}
Run Code Online (Sandbox Code Playgroud)
<p class="dropdownHeader">TOP <span id="arrowRight" class="arrowRight" onclick="toggleDivFunction();"> > </span></p>
<div class="dropdownText" id="dropdownText">
<p>TEXT TO BE SHOWN</p></div>
Run Code Online (Sandbox Code Playgroud)