我正在尝试为每个节点调用一个函数。当 notch 数组在 notchlick 函数中定义时,它不会创建数组。当我将它放在函数之外时,数组只包括原始节点而不是克隆。由于该数组是一个 htmlcollection,我假设它是一个实时列表。
let notch;
poppin = function () {
ole.classList.replace ('okay', 'olay');
ulay.classList.replace ('unlay', 'ulay');
bup[0].classList.replace ('bup', 'cup');
pegs.classList.replace ('pegs', 'legs');
if (!ran) {
notches();
switches();
}
count = 0;
}
let notches = function () {
for (a = 0; a < tn; a++) {
let svgc = svg.cloneNode(true);
pegs.append(svgc);
}
ran = true;
}
notch = Array.prototype.slice.call(document.getElementsByTagName('svg'));
notchlick = function (k) {
notch[k].onclick = function () {
spright();
spleft();
bup[count].classList.replace ('cup' , 'bup');
count = k;
bup[count].classList.replace ('bup' , 'cup')
}
}
switches = function () {
for (k = 0; k < notch.length; k++) {
notchlick(k);
}
}
克隆节点的行为与原始节点不同。当数组在函数外部声明时,这是问题的根源吗?还考虑到我对闭包的理解,我错过了为什么嵌套在函数中时数组不注册。