繁体   English   中英

Javascript似乎无法正确读取某些div的类名,但不是全部

[英]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中出现的类名的顺序。

  1. [没有班级名称]
  2. 第1步
  3. 第2步
  4. 第三步
  5. 第四步
  6. 步骤5
  7. 第2步
  8. 第三步
  9. 第四步
  10. 步骤5
  11. 第1步
  12. 第2步
  13. 第三步
  14. 第四步
  15. 步骤5

我已经在html代码中检查了类名,它们与警报中输出的内容完全匹配。 任何帮助,将不胜感激。

快速浏览一下,这是您想要的吗? 没有测试或任何东西。 showhide未定义,因此您传入的是未定义的变量。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM