我正在制作一个聊天系统,当用户聊天时,它会清除输入。该变量msg是用户输入的文本。let msg = document.querySelector("input").value;我以为这msg = "";可以清除输入,但事实并非如此。但由于某种原因document.querySelector("input").value = "";起作用了。它们不是完全相同的东西吗?
2 回答
jeck猫
TA贡献1909条经验 获得超7个赞
没有不同的消息仅分配值而不分配元素。如果你说let msg = document.querySelector("input")
,msg.value="";
它会起作用,因为味精是这里的元素。在您的代码中,msg 是值(而不是元素的值)。
慕村9548890
TA贡献1884条经验 获得超4个赞
value
输入元素的属性实际上是一个getter /setter,类似于innerHTML
of 元素。当您分配给属性时,setter 会运行并设置 DOM 中元素的状态。当您通过访问 获取属性时.value
,getter 会运行并检索 DOM 中元素的状态。
为了设置新值,您必须运行设置器,这需要分配给属性,例如
document.querySelector("input").value = "";
除了元素之外,在几乎所有情况下,重新分配变量本身永远不会产生任何副作用。无论你在做什么,msg = ''
单独做任何事都做不到,除非msg
稍后使用。
- 2 回答
- 0 关注
- 66 浏览
添加回答
举报
0/150
提交
取消