清除输入文本失败



我正在制作一个聊天系统,当用户聊天时,它会清除输入。变量msg是用户键入的文本。

let msg = document.querySelector("input").value;

我认为msg = "";可以用于清除输入,但事实并非如此。但由于某种原因document.querySelector("input").value = "";起了作用。它们不是完全一样吗?

没有相同的消息只分配值而不是元素。如果u说let msg = document.querySelector("input")msg.value="";,它会起作用,因为msg是这里的元素。在您的代码中,msg是值(而不是元素的值(。

输入元素的value属性实际上是getter/setter,类似于元素的innerHTML。当您为属性赋值时,setter将运行并设置DOM中元素的状态。当您通过访问.value获得属性时,getter将运行并检索DOM中元素的状态。

为了设置一个新的值,你必须让setter运行,这需要分配给属性,例如

document.querySelector("input").value = "";

除了元素之外,在几乎所有情况下,重新分配变量本身永远不会有任何副作用。无论您在做什么,单独使用msg = ''都不会有任何作用,除非稍后使用msg

最新更新