[英]Javascript doesn't seem to be reading my class names properly for some divs but not all
我的代码中有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),它正在寻找的第一个参数(显示)和它正在寻找的第二个参数(隐藏)。 对于所有15个div(不包括第一个div),只有一个类名,但它只能识别一个类名,即使该类名以0开头也位于第5和第12位。此代码位于函数内部,该函数可以传递2个变量:step1, step2,step3,step4或step5。 它在第5个位置识别step1类名称,在第12个位置识别step2,否则
toShow [j] .className
在警报中什么都没有出现。
这是所有div在dom中出现的类名的顺序。
我已经在html代码中检查了类名,它们与警报中输出的内容完全匹配。 任何帮助,将不胜感激。
快速浏览一下,这是您想要的吗? 没有测试或任何东西。 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";
}
}
问题是您在循环中使用了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";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.