Textarea:elem.val()vs elem.text()

min*_*eow 12 javascript jquery

这很奇怪.显然,我可以使用.val()和.text()来操作textarea文本.

但是在我使用.val来改变文本后,我再也不能使用.text了.相反的情况并非如此.

这导致一些时髦的错误.原因是因为我使用的插件可能正在使用.val来操作文本.

谁能解释一下这是如何工作的?谢谢!

Tim*_*own 9

你必须使用val()或(更好)valuetextarea 的属性.text()最初工作是因为textarea的初始值由它包含的文本节点(如果有)确定.您甚至可以最初更改此文本节点的nodeValueor data属性,它将更新textarea的值.但是,只要用户更改了textarea或脚本的值已经改变了textarea的value属性,文本节点就不在图片中,并且不再以任何方式绑定到textarea的值.


Poi*_*nty 8

.val()函数获取<textarea>元素的"value"属性,同时.text()获取元素中文本节点(节点类型3)的内容.我会说,如果设置完全.text()有效,那不是一个好主意,因为它基本上是用基本的物质构建块来愚弄.它可能导致错误,浏览器崩溃或毁灭性爆炸.

使用.val().

编辑 - .text()直到用户与<textarea>元素交互的位置,或者JavaScript代码设置"value"属性.在那之后,元素的DOM内容变得无关紧要.你仍然可以得到它,但它不会反映元素的实际状态.

  • 不,我只是看了很多电视 (4认同)