我正在创建一个聊天系统,当用户聊天时,它将清除输入。变量msg
是用户键入的文本。
let msg = document.querySelector("input").value;
我以为msg = "";
可以清除输入,但没有。但是由于某些原因,document.querySelector("input").value = "";
起作用了。他们不是完全一样吗?
不同的味精只分配值而不分配元素。如果u表示let msg = document.querySelector("input")
和msg.value="";
,它将起作用,因为msg是此处的元素。在您的代码中,味精是值(不是元素的值)。
输入元素的value
属性实际上是getter / setter,类似于元素的innerHTML
。分配给属性时,设置器将运行并设置DOM中元素的状态。通过访问.value
获得属性时,getter会运行并检索DOM中元素的状态。
为了设置新值,您必须让设置器运行,这需要分配给属性,例如
document.querySelector("input").value = "";
除了元素,重新分配变量本身在几乎所有情况下都不会有任何副作用。无论您在做什么,除非稍后使用msg = ''
,否则msg
alone不会做任何事情。