javascript - 显示和隐藏 Javascript HTML5

标签 javascript html

所以,我正在 html 中制作我的设计师作品集,我想要一个仅在按下此字符时显示的菜单...

但是我是编程新手,而且我的代码非常简单,所以我使用这个:

function toggle_visibility(id) {
  var e = document.getElementById(id);
  if(e.style.visibility == 'hidden')
      e.style.visibility = 'visible';
  else
      e.style.visibility = 'hidden';
}

function untoggle_visibility(id) {
  var e = document.getElementById(id);
  if(e.style.visibility == 'visible')
      e.style.visibility = 'hidden';
  else
      e.style.visibility = 'visible';
}    
<div id="openmenu" style="visibility: visible;" onclick="toggle_visibility('menu'); onclick=toggle_visibility('closemenu');">openmenu</div>
    
<div id="closemenu" style="visibility: hidden;" onclick="untoggle_visibility('menu'); onclick=untoggle_visibility('closemenu');">closemenu</div>
    
<div id="menu" style="visibility: hidden;">...</div>

问题是它只能工作一次......

当我单击#openmenu时,它会显示#menu#closemenu,当我单击#closemenu时它隐藏了#menu#closemenu

但它只能工作一次,所以如果我在#closemenu之后按#openmenu,它就不会工作......

最佳答案

您的代码错误。

onclick="toggle_visibility('menu'); onclick=toggle_visibility('closemenu');"

所以上面的代码会运行一次。当它运行时,它会重新分配 onclick 因为你有 onclick=functionCall

所以运行后你基本上有 <div onclick=undefined>因为该函数没有运行。

function toggle_visibility(id) {
  var e = document.getElementById(id);
  if (e.style.visibility == 'hidden')
    e.style.visibility = 'visible';
  else
    e.style.visibility = 'hidden';
}

function untoggle_visibility(id) {
  var e = document.getElementById(id);
  if (e.style.visibility == 'visible')
    e.style.visibility = 'hidden';
  else
    e.style.visibility = 'visible';
}
<div id="openmenu" style="visibility: visible;" onclick="toggle_visibility('menu');toggle_visibility('closemenu');">openmenu</div>

<div id="closemenu" style="visibility: hidden;" onclick="untoggle_visibility('menu');untoggle_visibility('closemenu');">closemenu</div>

<div id="menu" style="visibility: hidden;">...</div>

大多数人会如何编码?通过切换类。

function toggle_visibility(ids) {
  ids.forEach( function (id) {
    var elem = document.getElementById(id);
    elem.classList.toggle('visibilityHidden')
  })
}
.visibilityHidden {
  visibility: hidden;
}

/* use hidden if you do not want it to take up space */
.hidden {
  display: none;
}
<div id="openmenu" onclick="toggle_visibility(['menu','openmenu','closemenu']);">openmenu</div>

<div id="closemenu" class="visibilityHidden" onclick="toggle_visibility(['menu','openmenu','closemenu']);">closemenu</div>

<div id="menu" class="visibilityHidden">...</div>

大多数开发人员也不会使用内联事件处理程序,但这是一个不同的问题。

关于javascript - 显示和隐藏 Javascript HTML5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54460972/

相关文章:

javascript - 在 React Native 中通过子组件更新父组件

javascript - 在 AngularJS 中将空文本而不是 null 设置为 ng-model

javascript - 阿普塔纳工作室 3.3.1。 Javascript 代码补全

javascript - 正则表达式删除 [] 和之间的所有项目

php - 如何将这个图像预加载器实现到我的 php 文件中?

javascript - 如何从矩阵中提取子矩阵?

html - 使用 CSS 将旧 HTML 文件转换为 HTML 5

javascript - location.href 在 ajax 之后不起作用(更多详细信息)

html - CSS3 : how to put something at the top of second column?

javascript - 在 TreeView 显示中只保持一个 li 节点打开