我试图在每个节点上调用一个函数。在notchlick函数中定义了notch数组时,它不会创建该数组。当我将其放置在函数之外时,数组仅包含原始节点,而不包含克隆。由于该数组是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);
}
}
克隆的节点不执行原始操作。如图所示,在函数外部声明数组时,这是问题的根源吗?同样,鉴于我对闭包的理解,我也错过了为什么嵌套在函数中时数组不注册的原因。