以下问题描述请引用下面的代码:
// 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/