javascript - 如何简化 Javascript "show/hide on DIV"函数的代码?

标签 javascript html css

我已经阅读了整个 W3schools Javascript 教程(基础和高级)超过 3 遍。我已经无数次阅读 HTML/CSS 教程。我还阅读了该站点上有关显示/隐藏功能的几篇文章。我曾尝试使用 Javascript 变量,但我遇到了错误。

绝对不要 Jquery,请只使用 Javascript。

我的标记:

<script type="text/javascript" src="/showerHider.js"></script>

<div id="wrappernav"> </div>

<div class="container">
   <a id="btntxt" href="javascript:showerHider(document.getElementById('wrappernav'))">HIDE NAVIGATION</a>
   <a id="btn" href="javascript:showerHider(document.getElementById('wrappernav'))"></a>
</div>

我是一个极简主义的程序员,想简化我的 showerHider Javascript 函数和我的标记的属性。我有一个 <div id="wrappernav">当用户单击嵌套在另一个 <div class="container"> 中的两个 CLOSE 按钮之一时,导航垂直过渡到屏幕外.当 wrappernav transitions 这两个按钮被移动并变成 SHOW 按钮,让用户可以选择...好吧你可以看到这是怎么回事...

我的外部 Javascript:

function showeHider(floater)
{
floater.style.webkitTransition = "margin-top .25s ease-in-out 0s" ;

if (floater.style.marginTop == "-345px" )
  {
  floater.style.marginTop = "25px" ;
  document.getElementById("btntxt") .innerHTML = "HIDE NAVIGATION" ;
  document.getElementById("btntxt") .style.top = "-370px" ;
  document.getElementById("btntxt") .style.left = "162px" ;
  document.getElementById("btn") .style.top = "-300px" ;
  document.getElementById("btn") .style.left = "135px" ;
  }

else
  {
  floater.style.marginTop = "-345px" ;
  document.getElementById("btntxt") .innerHTML = "SHOW NAVIGATION" ;
  document.getElementById("btntxt") .style.top = "20px" ;
  document.getElementById("btntxt") .style.left = "490px" ;
  document.getElementById("btn") .style.top = "17px" ;
  document.getElementById("btn") .style.left = "450px" ;
  }
}

目前我在 onclick 中有 Javascript CLOSE/SHOW 按钮的属性,将按钮绑定(bind)到 showerHider功能。我想简化这些属性并将 Javascript 放在外部 showerHider 中Javascript 文件。此外,我不确定是否应该让 Javascript 处理转换或使用 CSS。我发现在为所有主要浏览器声明转换时 Javascript 很棘手,我更愿意让 CSS 来做。

最佳答案

这是一个简化版本:

function showeHider(floater) {
  var btn, btntxt, arrValues, strPx;

  floater.style.webkitTransition = "margin-top .25s ease-in-out 0s";

  btn = document.getElementById("btn");
  btntxt = document.getElementById("btntxt");

  arrValues = (floater.style.marginTop == "-345px") ? ["25", "HIDE", "-370", "162", "-300", "135"] : ["-345", "SHOW", "20", "490", "17", "450"];
  strPx = "px";

  floater.style.marginTop = arrValues[0] + strPx;
  btntxt.innerHTML = arrValues[1] + " NAVIGATION";
  btntxt.style.top = arrValues[2] + strPx;
  btntxt.style.left = arrValues[3] + strPx;
  btn.style.top = arrValues[4] + strPx;
  btn.style.left = arrValues[5] + strPx;
}

也许 strPx 有点矫枉过正,但如果您打算最小化代码,那么 var 的长度将只有 1 个字符,应该会有一些好处。

我所做的是:

  • 缓存元素btnbtntxt
  • 将值放在数组中
  • 使用三元运算符 a ? b : c,意味着如果 a 中的内容为真,它将选择 b 否则选择 c,您可以 read more about it here .

但是,请认真考虑拥有两个类,然后仅使用 JavaScript 在它们之间切换,如 Jeff Powers suggested .

关于javascript - 如何简化 Javascript "show/hide on DIV"函数的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20133827/

相关文章:

html - CSS/HTML 复杂形状

c# - 在 ASP.NET Web 窗体中更改 span 标记上的 CSS

javascript - 如何在 css/javascript 中创建垂直制表符?

javascript - 如何让用JS输入的数字不溢出容器而是跳到下一行?

javascript - 使用后备值减少对象数组

JavaScript:如何使 div 的样式依赖于在选择框中选择的选项?

javascript - 如何使用 browserify 运行节点加密模块

javascript - 页脚将自身定位在 HTML 部分的底部

javascript - 以编程方式捕获 .PDF 文件中所有嵌入文本项的位置和内容?

javascript - AG-GRID 单元格在第二次编辑后仅显示错误边框和工具提示