javascript - 我该如何优化这个片段?

标签 javascript

由于只能将各个部分粘合在一起才能使一些 JS 工作,所以我想出了以下代码。

if (document.getElementById("component_projector_askforproduct")){
  document.getElementById("component_projector_askforproduct").style.display = "none";
}
if (document.getElementById("askforproduct_58676")){
  document.getElementById("askforproduct_58676").className = "";
}
if (document.getElementById("longdescription_58676")){
  document.getElementById("longdescription_58676").className = "";
}

if (document.getElementById("opinions_58676")){
  document.getElementById("opinions_58676").className = "activTab";
}
if (document.getElementById("component_projector_opinions")){
  document.getElementById("component_projector_opinions").style.display = "block";
}
if (document.getElementById("component_projector_opinions_add")){
  document.getElementById("component_projector_opinions_add").style.display = "block";
}

它有效,但我知道这很困惑。我怎样才能优化和精简这段代码?

最佳答案

我会做的是:

  1. 使用对象来存储所有更改,例如:

    var objChecks = {
      component_projector_askforproduct: "some_display_none_className",
      askforproduct_58676: "",
      longdescription_58676: ""
    }
    
  2. 然后创建函数来处理它(将 objChecks 传递给它):

    function processChecks(checks) {
      Object.getOwnPropertyNames(objChecks).map(function(check){
        var el = document.getElementById(check);
        if (el) el.className=objChecks[check];
      })
    }
    
  3. 稍微更改一下您的 HTML。我注意到有时你会更改className,有时会更改style.display。我会创建一个隐藏元素的新类(与 display=none 相同),这使得一切变得更加整洁。

关于javascript - 我该如何优化这个片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41466091/

相关文章:

javascript - 将 Canvas 转换为图像然后下载

javascript - 当一个文本 div 更改时,使其他文本 div 更改大小

javascript - 如何让浏览器缓存一个https站点的css和js文件?

javascript - 从另一个文件夹执行 Node 脚本时出现相对路径错误

javascript - 如何更改动态 AngularJS ng 类中字形的颜色?

javascript - AngularJS + Restangular - 调用 .one() 和 .get() 结果是数组?

javascript - Phonegap 蓝牙插件无法正常工作

javascript - 在javascript中排序的奇怪结果

javascript - Angular flex-layout 错误溢出

javascript属性值函数不被继承