.getElementById在.createTextNode中返回未定义

.getElementById returning undefined in .createTextNode

本文关键字:返回 未定义 createTextNode getElementById      更新时间:2023-09-26

这里有一个真正简单的代码:

<input type="text" id="haha"></input>
<button onclick="myFunction()">Try it</button>

<script>
    var sth = document.getElementById("haha").value;
    function myFunction() {
        var h = document.createElement("p");
        var t = document.createTextNode("Hello" + sth.value);
        h.appendChild(t);
        document.body.appendChild(h);
    }
</script>

一切都很好,只是它返回了Heloundefined,而不是我输入到文本框中的值。我也试过各种其他的东西,但要么什么都不回,要么就是[object HTMLInputElement]。有什么解决方案吗?

您正在将sth设置为元素的值:

var sth = document.getElementById("haha").value;

所以CCD_ 3是字符串。然后,您尝试获取该字符串的(不存在的)value属性:

var t = document.createTextNode("Hello" + sth.value);

相反,将sth设置为元素本身:

var sth = document.getElementById("haha");

var sth = document.getElementById("haha");
function myFunction() {
  var h = document.createElement("p");
  var t = document.createTextNode("Hello " + sth.value);
  h.appendChild(t);
  document.body.appendChild(h);
}
<input type="text" id="haha"></input>
<button onclick="myFunction()">Try it</button>