【问题标题】:Any way to simply this javascript function any further?有什么方法可以进一步简化这个javascript函数吗?
【发布时间】:2018-05-14 18:11:35
【问题描述】:

如果可能的话,这是我想进一步简化的代码(我有一个完整的 if 列表,但这应该让你大致了解我想要什么):

function doc(type, name) {
    if (type === 'getid')return document.getElementById(name);
    if (type === 'getclass')return document.getElementsByClassName(name);
}

【问题讨论】:

  • 这可能会在codereview.stackexchange.com 上得到更好的接收,但它非常基本。
  • 对我来说看起来很简单。你认为它有什么问题?它是复杂的还是难以理解的呢?你如何使用这个功能?整个东西可以用document.querySelectorAll代替吗? developer.mozilla.org/en-US/docs/Web/API/Document/…
  • 选择器已经是一个字符串,它指定对特定特征的 dom 查找,即"." + name 是类名的选择器,# 是 id 等,也许使用 querySelector 来适应*.
  • 我正计划添加document.createElementdocument.createTextNode 等,所以document.querySelectorAll 不起作用

标签: javascript function if-statement return


【解决方案1】:

或者,您可以使用switch 语句。例如:

function doc(type, name) {
    var element;
    switch(type) {
        case 'getid':
            element = document.getElementById(name);
            break;
        case 'getclass':
            element = document.getElementsByClassName(name);
            break;
    }
    return element;
}

【讨论】:

    【解决方案2】:

    您可以使用类型为键、方法为值的对象。

    function doc(type, name) {
        return document[{
            getid: 'getElementById',
            getclass: 'getElementsByClassName'
        }[type]](name);
    }
    

    【讨论】:

    • 如果type 不是'getid''getclass' 怎么办?
    • 如果type 不可靠,您可以添加一个默认值。
    猜你喜欢
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多