清除输入文本失败

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

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

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


慕斯709654
浏览 42回答 2
2回答

jeck猫

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

慕村9548890

value输入元素的属性实际上是一个getter /setter,类似于innerHTMLof 元素。当您分配给属性时,setter 会运行并设置 DOM 中元素的状态。当您通过访问 获取属性时.value,getter 会运行并检索 DOM 中元素的状态。为了设置新值,您必须运行设置器,这需要分配给属性,例如document.querySelector("input").value = "";除了元素之外,在几乎所有情况下,重新分配变量本身永远不会产生任何副作用。无论你在做什么,msg = '' 单独做任何事都做不到,除非msg稍后使用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5