【发布时间】:2015-09-04 17:16:58
【问题描述】:
我可能真的把事情复杂化了......而且很难解释,所以我只在这里展示代码:
for (var i = 0; i < x.length; i++) {
(function(i) {
if (x[i].className === 'RU') {
x[i].style.display = 'none';
if (x[i].previousSibling.tagName === 'BR' && x[i].previousSibling.style.display != 'none') {
x[i].previousSibling.style.display = 'none';
}
}
})(i);
}
这很好,但我想做的是在循环内创建一个函数,该函数将检查每个 x[i].previousSibling 是否属于“BR”类型。所以我需要声明一个函数,它会自行循环,直到它到达一个不是“BR”标签的元素。我试过了:
for (var i = 0; i < x.length; i++) {
(function(i) {
if (x[i].className === 'RU') {
x[i].style.display = 'none';
var check = true;
var a = '';
function foo() {
while (check) {
if (x[i].previousSibling.tagName === 'BR' && x[i].previousSibling.style.display != 'none') {
x[i].previousSibling.style.display = 'none';
a = x[i].previousSibling;
}else
check = false;
foo();
}
}
}
})(i);
}
那什么也没做...我认为它甚至没有进入foo 函数。有什么建议吗?
【问题讨论】:
-
您在那里声明了一个函数,但没有执行它。该脚本将在 x.length 上声明函数 foo ,仅此而已。尝试在 for 之外声明函数,并在 var 声明后调用它,您可以为函数设置 x 和 check 参数。 (不知道编码试图这样做)。
-
@ecarrizo 我想我只是需要一双全新的眼睛。稍加修改,我就得到了我想要的。谢谢你的建议。将其发布为答案,我将标记为正确。
-
哈哈!发生了..没关系,粘贴您的工作代码作为答案并接受它:)(您可以回答自己的问题);
标签: javascript loops for-loop while-loop