代码之家  ›  专栏  ›  技术社区  ›  phurst-so

存储循环结果以推入HTML

  •  2
  • phurst-so  · 技术社区  · 7 年前

    编辑:已解决。在这里乐于助人的人帮我解决了这个问题之后,我意识到这个问题与我的工作有关 getElementsByClassName 选择器。抱歉,如果标题有误导性。原始问题如下。

    我从这个函数的 for 循环,但我无法将它们打印到HTML。

    任何建议都将不胜感激。

    HTML格式:

    <input type="text" name="searchString" class="searchString">
    
    <span class="longestWordInput"></span>
    <span class="longestWordCountInput"></span>
    
    <button class="generate">Generate</button>
    

    function longestWordFunc() {
      var stringSplit = document.querySelector(".searchString").value.split(" ");
    
      let longestWordCount = 0;
      let longestWord = "";
    
      for(var i = 0; i < stringSplit.length; i++) {
        if(stringSplit[i].length > longestWordCount) {
    
          longestWordCount = stringSplit[i].length; 
          longestWord = stringSplit[i]
        }
      }
    
      //Logging expected result
      console.log(longestWordCount)
      console.log(longestWord)
    
      //Print to HTML not working
      document.getElementsByClassName("longestWordInput").innerHTML = longestWord;
      document.getElementsByClassName("longestWordCountInput").innerHTML = longestWordCount;
    };
    
    document.querySelector(".generate").addEventListener("click", longestWordFunc);
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   not a number    7 年前

    问题是 getElementsByClassName() 返回NodeList(一种类似数组的结构,包含具有指定类名的所有元素),而不是单个元素。

    document.getElementsByClassName("longestWordInput")[0].innerHTML = longestWord;
    

    或者你可以用 querySelector()

    document.querySelector(".longestWordInput").innerHTML = longestWord;
    
        2
  •  1
  •   magegaga.com    7 年前

    嗨,我相信你需要像下面这样使用getElementsByClassName

    document.getElementsByClassName("longestWordInput")[0].innerHTML = longestWord;
    document.getElementsByClassName("longestWordCountInput")[0].innerHTML = longestWordCount;