对于某些div而言,Javascript似乎没有正确地读取我的类名,但不是全部

时间:2011-11-07 21:43:18

标签: javascript html dom

我的代码中有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中出现的类名顺序就是这个。

  1. [无课程名称]
  2. 步骤1
  3. 步骤2
  4. 步骤3
  5. 步骤4
  6. STEP5
  7. 步骤2
  8. 步骤3
  9. 步骤4
  10. STEP5
  11. 步骤1
  12. 步骤2
  13. 步骤3
  14. 步骤4
  15. STEP5
  16. 我已经检查了我的html代码中的类名,它们与我在警报中输出的内容完全匹配。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

快速浏览一下,这就是你想要的吗?避免测试或任何东西。 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";
    }
}

答案 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";
        }
    }