Javascript, кажется, не читает мои имена классов должным образом для некоторых div, но не для всех - PullRequest
0 голосов
/ 08 ноября 2011

В моем коде 15 тегов div.Я не только подсчитал в своем коде вручную, но и зарегистрировался в dom с помощью firebug и вывел предупреждение для каждой итерации через

    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 (кроме первого) существует одно имя класса, но оно распознает только то, что имя класса существует даже на 5-й и 12-й позиции, начиная с 0). Этот код находится внутри функции, и функция может передавать 2 переменные: step1,step2, step3, step4 или step5.Он распознает имя класса step1 на 5-й позиции и step2 на 12-й позиции, в противном случае

toShow [j] .className

в предупреждении появляется как ничто.

Порядок имен классов, которые встречаются в dom для всех div'ов, такой:

  1. [без имени класса]
  2. step1
  3. step2
  4. step3
  5. step4
  6. step5
  7. step2
  8. step3
  9. step4
  10. step5
  11. step1
  12. step2
  13. step3
  14. step4
  15. step5

Я проверил имена классов в своем HTML-коде иони точно совпадают с тем, что я ищу, как показано в моем предупреждении.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2011

Проблема в том, что вы используете 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";
        }
    }
0 голосов
/ 08 ноября 2011

На первый взгляд, это то, что вы хотели? Не проверял или что-нибудь. 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";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...