getElementsByClassName, не работающие, [копируют]

13
задан Brian Tompsett - 汤莱恩 29 November 2016 в 11:29
поделиться

2 ответа

Есть несколько проблем:

  1. Имена классов (и идентификаторы) не могут начинаться с цифры .
  2. Вы должны передать класс в getElementsByClassName () .
  3. Вы должны повторить набор результатов.

Пример ( непроверенный ):

<script type="text/javascript">
function hideTd(className){
    var elements = document.getElementsByClassName(className);
    for(var i = 0, length = elements.length; i < length; i++) {
       if( elements[i].textContent == ''){
          elements[i].style.display = 'none';
       } 
    }

  }
</script>
</head>
<body onload="hideTd('td');">
<table border="1">
  <tr>
    <td class="td">not empty</td>
  </tr>
  <tr>
    <td class="td"></td>
  </tr>
  <tr>
    <td class="td"></td>
  </tr>
</table>
</body>

Обратите внимание, что getElementsByClassName () недоступен до IE8 включительно.

Обновление:

В качестве альтернативы вы можете присвоить таблице идентификатор и использовать:

var elements = document.getElementById('tableID').getElementsByTagName('td');

для получения всех элементов td .

Чтобы скрыть родительскую строку, используйте свойство parentNode элемента:

elements[i].parentNode.style.display = "none";
37
ответ дан 1 December 2019 в 19:07
поделиться

Если вы хотите сделать это с помощью ClassName, вы можете сделать:

<script type="text/javascript">
function hideTd(className){
    var elements;

    if (document.getElementsByClassName)
    {
        elements = document.getElementsByClassName(className);
    }
    else
    {
        var elArray = [];
        var tmp = document.getElementsByTagName(elements);  
        var regex = new RegExp("(^|\\s)" + className+ "(\\s|$)");
        for ( var i = 0; i < tmp.length; i++ ) {

            if ( regex.test(tmp[i].className) ) {
                elArray.push(tmp[i]);
            }
        }

        elements = elArray;
    }

    for(var i = 0, i < elements.length; i++) {
       if( elements[i].textContent == ''){
          elements[i].style.display = 'none';
       } 
    }

  }
</script>
1
ответ дан 1 December 2019 в 19:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: