javascript - 修改现有代码以接受多个参数

标签 javascript

以下问题描述请引用下面的代码:

// Populate a select list with pt codes.
    this.populateCodeList = function (ptName_, listSelector_) {

        if (!ptName_) { return self.displayError("Invalid pt name", "populatecodeList"); }
        if (!listSelector_) { return self.displayError("Invalid list selector", "populatecodeList"); }

        var pt = self.registry.pt[ptName_];

        if (!pt) { return self.displayError("Invalid PT: " + ptName_, "populateCodeList"); }

        var html = "";

        $_.each(pt.codes, function (index_, code) {

            if (!code || !code.id || !code.name) { return self.displayError("Invalid code at index " + index_, "populateCodeList"); }

            html += "<option value='" + code.id + "'>" + code.name + "</option>";
        });

        $_(listSelector_).html(html);
    };

问题描述:

我在代码中调用上述函数,如下所示:

app_.populateCodeList("First Attribute", self.selectors.add_attribute_dialog + " .attribute-name");

一切正常。但是,当我尝试像这样调用上面的函数并将第二个属性分开时 用逗号分隔,如下:

 app_.populateCodeList("First Attribute,Second Attribute", self.selectors.add_attribute_dialog + " .attribute-name");

我收到以下错误 Invalid PT:First Attribute,Second Attribute in populateCodeList 这是上面代码中这一行的结果 if (!pt) { return self.displayError( "无效 PT:"+ ptName_, "populateCodeList"); }

所以基本上我的代码没有被编程来处理用逗号分隔的两个参数,而是处理行中显示的单个变量

var pt = self.registry.pt[ptName_];

如何确保上面的行在需要时接受单参数和双参数?

谢谢

最佳答案

您可以按分隔符进行拆分或允许函数使用者传递数组。以下是第一个建议的示例:

this.populateCodeList = function (ptName_, listSelector_) {

    if (!ptName_) { return self.displayError("Invalid pt name", "populatecodeList"); }
    if (!listSelector_) { return self.displayError("Invalid list selector", "populatecodeList"); }

    var ptNames = ptName_.split(',');
    // if empty, nothing was passed
    if (!ptNames.length) { return self.displayError("No pt names supplied"); }
    // iterate over all matches
    var html = "";

    ptNames.forEach(function(ptName) {
       var pt = self.registry.pt[ptName];
       if (!pt) { return self.displayError("Invalid PT: " + ptName, "populateCodeList"); }

       $_.each(pt.codes, function (index_, code) {

          if (!code || !code.id || !code.name) { return self.displayError("Invalid code at index " + index_, "populateCodeList"); }

          html += "<option value='" + code.id + "'>" + code.name + "</option>";
       });

    });

    $_(listSelector_).html(html);
};

关于javascript - 修改现有代码以接受多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42866448/

相关文章:

javascript - 使用 jQuery 修复 html 表的部分

javascript - Gremlin 暂停响应写入,因为 RequestMessage 超出了 writeBufferHighWaterMark

传递给方法的 Javascript 对象是一个字符串

javascript - 从数组中检索 jQuery 元素

javascript - Jquery mobile - 在按钮单击事件后返回索引

javascript - HTML "mailto:"无法在新窗口中打开

javascript - 在不刷新的情况下将参数附加到 URL

javascript - 如何防止浏览器记住复选框状态?

javascript - 我如何获得在 firefox/chrome 上播放的单循环 gif

javascript - 获取元素的标签名称