【发布时间】:2016-09-15 17:12:01
【问题描述】:
我正在尝试传递一个已保存为 var 的数组。我在父函数中声明 var 并将 arr 作为参数添加到父函数中。然后我将 arr 作为回调调用中的参数拉入。 控制台告诉我 linksA 未定义。
var supportLists = function(selector, arr) {
var parentList = document.getElementById(selector);
var theList = parentList.querySelectorAll("a");
var linksA = [
"http://www.example.com",
"http://www.example.com/path2",
"1",
"2",
"4",
"3",
"5",
"6",
"7"
];
var linksB = [
"1",
"2",
"3"
];
var linksC = [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12"
];
var linksD = [
"1",
"2"
];
var linksE = [
"1",
"2",
"3"
];
var linksF = [
"1",
"2",
"3",
"4",
"5",
"6"
];
var linksG = [
"1",
"2",
"3"
];
var linksH = [
"1",
"2",
"3",
"4"
];
var linksI = [
"1"
];
var linksJ = [
"1",
"2",
"3",
"4",
"5"
];
function processLi(listItems, links) {
for (var i = 0; i < links.length; i++) {
listItems.forEach(function(item, index) {
item.href = links[index];
item.target = "_blank";
});
}
}
processLi(theList, arr);
};
supportLists("support-list", linksA);
supportLists("support-list-b", linksB);
supportLists("support-list-c", linksC);
supportLists("support-list-d", linksD);
supportLists("support-list-e", linksE);
supportLists("support-list-f", linksF);
supportLists("support-list-g", linksG);
supportLists("support-list-h", linksH);
supportLists("support-list-i", linksI);
supportLists("support-list-j", linksJ);
【问题讨论】:
-
您正试图在声明它们的函数之外使用这些
links变量。 -
添加到@squint 答案,您可以在将调用函数的同一范围内声明数组并将它们作为函数的参数传递,或者也将链接数组的名称传递为用作函数的输入参数,并在其中有一个逻辑来选择和使用正确的数组。
-
如果我将它们放在 processLi 函数中,则会出现相同的错误。此外,我不是在父函数内部的调用中使用它们,而不是回调?
-
我不知道这与高阶函数有什么关系。
-
@ardev 你应该把它们放在
supportLists函数的外部,在使用变量的调用旁边
标签: javascript arrays variables parameters