我的代码中有15个div标签。我不仅手动计算我的代码,而且还使用firebug检查了dom并通过
输出每次迭代的警报 var toShow2 = document.getElementsByTagName("div");
for (var j=0;j<toShow2.length; j++) {
alert(toShow[j].className + " class iteration:" + j + "; checking for (show): " + show + "; checking for (hide): " + hide);
if (toShow[j].className.indexOf(show) > -1) {
var style = toShow[j].style;
style.display = "block";
}
if (toShow[j].className.indexOf(hide) > -1) {
var style = toShow[j].style;
style.display = "none";
}
}
警报显示className(如果有),当前迭代(0-14),它正在查找的第一个参数(show)以及它要查找的第二个参数(hide)。对于所有15个div(不包括第一个),有一个类名,但它只识别一个类名甚至存在于第5和第12位置以0开头。这个代码在函数内部,函数可以传递2个变量:step1, step2,step3,step4或step5。它识别第5个位置的step1类名称和第12个位置的step2,否则
toShow [J机] .className
警报中的一无所获。
所有div中dom中出现的类名顺序就是这个。
我已经检查了我的html代码中的类名,它们与我在警报中输出的内容完全匹配。任何帮助将不胜感激。
答案 0 :(得分:0)
快速浏览一下,这就是你想要的吗?避免测试或任何东西。 show
和hide
未定义,因此您传入的是未定义的变量。
var toShow2 = document.getElementsByTagName("div");
for (var j=0;j<toShow2.length; j++) {
alert(toShow[j].className + " class iteration:" + j + "; checking for (show): " + show + "; checking for (hide): " + hide);
if (toShow[j].className.indexOf('show') > -1) {
var style = toShow[j].style;
style.display = "block";
}
if (toShow[j].className.indexOf('hide') > -1) {
var style = toShow[j].style;
style.display = "none";
}
}
答案 1 :(得分:0)
问题是你在循环中使用toShow,但循环基于toShow2。修复如下:
var toShow2 = document.getElementsByTagName("div");
for (var j=0;j<toShow2.length; j++) {
alert(toShow2[j].className + " class iteration:" + j + "; checking for (show): " + show + "; checking for (hide): " + hide);
if (toShow2[j].className.indexOf(show) > -1) {
var style = toShow2[j].style;
style.display = "block";
}
if (toShow2[j].className.indexOf(hide) > -1) {
var style = toShow2[j].style;
style.display = "none";
}
}