代码之家  ›  专栏  ›  技术社区  ›  rearThing

获取JS中动态元素的文本

  •  0
  • rearThing  · 技术社区  · 4 年前

    我正在动态生成输入字段,希望解析字段中输入的任何文本,并在以后的keydownFunc中处理。键事件发生后,DOM中没有可用的文本。

    这是我的代码:

    for (i = 1; i < 7; i++) {
      var element = document.createElement("input");
      element.setAttribute("style", "width:33px;");
      element.setAttribute("name", i);
      element.setAttribute("onkeydown", "keydownFunc(event);");
      var tempID = document.getElementById(i)
      tempID.appendChild(element);
    
    }
    
    function keydownFunc(event) {
      var x = event.keyCode;
      if (x == 13 | x == 9) {
        path = event.path[1].id
        console.log(path);
        //           process input
      }
    }
    <table id="table">
      <tbody>
        <td id="1"></td>
        <td id="2"></td>
        <td id="3"></td>
        <td id="4"></td>
        <td id="5"></td>
        <td id="6"></td>
      </tbody>
    </table>
    2 回复  |  直到 4 年前
        1
  •  1
  •   RoToRa    4 年前

    您应该避免使用以下命令分配事件处理程序 on... 属性。你应该使用 addEventListener 相反:

    element.addEventListener("keydown", keydownFunc);
    

    阿尔索 path 是Event对象的一个相当模糊且不标准的属性。你想访问什么?如果是输入本身,那么使用 event.target (例如 event.target.value 获取其值),或者如果要获取表单元格,则使用 event.target.parentNode .

        2
  •  1
  •   Daniel McLaury    4 年前

    我不完全确定你的问题是什么,但我认为你想访问某人在文本框中输入的文本并对其进行处理。你可以在你的 keydownFunc 作为

    event.path[0].value
    

    在这里 event.path[0] 将是输入元素。

    顺便说一句,您不需要为输入元素命名,除非您将该名称用于其他用途。