【发布时间】:2011-04-27 06:01:42
【问题描述】:
这很奇怪。显然,我可以同时使用 .val() 和 .text() 来操作 textarea 文本。
但在我使用 .val 更改文本后,我无法再使用 .text。反之则不成立。
这导致了一些时髦的错误。原因是我正在使用的插件可能正在使用 .val 来操作文本。
谁能解释一下这是如何工作的?谢谢!
【问题讨论】:
标签: javascript jquery
这很奇怪。显然,我可以同时使用 .val() 和 .text() 来操作 textarea 文本。
但在我使用 .val 更改文本后,我无法再使用 .text。反之则不成立。
这导致了一些时髦的错误。原因是我正在使用的插件可能正在使用 .val 来操作文本。
谁能解释一下这是如何工作的?谢谢!
【问题讨论】:
标签: javascript jquery
您必须使用val(),或者(更好)textarea 的value 属性。 text() 最初起作用是因为 textarea 的初始值由它包含的文本节点(如果有)确定。您甚至可以最初更改此文本节点的nodeValue 或data 属性,它将更新文本区域的值。但是,一旦用户更改了 textarea 的值或脚本更改了 textarea 的 value 属性,文本节点就会脱离图片并且不再以任何方式绑定到 textarea 的值。
【讨论】:
value 属性),更改文本节点将不再对值产生任何影响.更改 value 属性不会对文本节点产生任何影响。
.val() 函数获取<textarea> 元素的“值”属性,而.text() 获取元素中文本节点(节点类型3)的内容。我想说,如果设置 .text() 完全有效,这不是一个好主意,因为它本质上是在玩弄物质的基本构建块。它可能会导致错误、浏览器崩溃或毁灭性爆炸。
使用.val()。
edit — .text() 工作到用户与 <textarea> 元素交互的点,或者 JavaScript 代码设置“值”属性。在那之后,元素的 DOM 内容变得无关紧要。你仍然可以得到它,但它不会反映元素的实际状态。
【讨论】:
听起来很奇怪,但在较低级别, .val() 是我期望的工作,因为 .value 是访问表单元素内容的方式。为什么 .text() 在某些情况下有效让我感到震惊
【讨论】:
必须用Node.text()的类型检索...
.Text() 获取所有匹配元素的 innerText(不是 HTML),.val() 从输入元素中检索值...
【讨论】: