цикл for возвращает неопределенное значение

#javascript #html #for-loop #hyperlink

#javascript #HTML #для цикла #гиперссылка

Вопрос:

Я пытаюсь создать функцию, которая изменяет ссылку href в зависимости от того, какие элементы видны.

Итак, в этом примере я хочу, чтобы моя ссылка былаwww.link.com/sample1/sample2.

Поскольку div sample3 скрыт, он не должен быть включен в URL в этом примере.

 <div class="filters"> sample1</div>
<div class="filters"> sample2</div>
<div class="filters" style="display:none"> sample3 </div>

<script>
function rt100_link_function() {
    var link = document.getElementById("RT100link");
    var all = document.getElementsByClassName("filters");
    for (var i = 0, max = all.length; i < max; i  ) {
      if (isHidden(all[i]))
        link.href = link.href;
      else
        var one = all[i]
        link.href = link.href   one.innerhtml;
      }
  }
    
  function isHidden(el) {
    var style = window.getComputedStyle(el);
    return ((style.display === 'none'))
  }
</script>
  

Проблема, с которой я столкнулся, заключается в том, что URL выводится какwww.link.com/undefined — Я просто хочу взять содержимое видимых разделов и включить его в URL-адрес, разделенный косой чертой — но .innerhtml не работает?

Любая помощь приветствуется!

Ответ №1:

Используйте one.innerHTML вместо one.innerhtml как;

 link.href = link.href   one.innerHTML;
  

.innerhtml не является свойством элемента DOM, поэтому оно всегда будет возвращаться undefined .

Комментарии:

1. Спасибо за объяснение! Очень помогает. Это не сработало с переменной «one», поэтому удалил ее и заменил one.innerHTML на all[i].innerHTML. Работает почти идеально. Единственная другая проблема заключалась в том, что URL включал случайную строку символов перед моей предполагаемой строкой. Исправлено с помощью .replace однако.