什么类型的对象在控制台中显示为[object Text]
What kind of object shows up in the console as [object Text]?
假设我有以下元素:
<p id="thingy">Here is some <em>emphasized</em> text!</p>
在Javascript控制台中,我将使用jQuery:获取其内容
> var theContents = $('<p id="thingy">Here is some <em>emphasized</em> text!</p>').contents();
theContents
现在是一个看起来像这样的数组:
> theContents
["Here is some ", <em>emphasized</em>, " text!"]
到目前为止还不错;它似乎是一个数组,其中元素0
和2
是字符串,元素1
是jQuery对象。如果我只输出第一个元素,它似乎证实了我的猜测:
> theContents[0]
"Here is some "
然而,如果我试图将它与另一个字符串连接起来,我会发现我缺乏一些理解:
> 'Hello! ' + contents[0];
"Hello! [object Text]"
所以这个变量看起来像一个字符串,但实际上它是某种对象。就这一点而言,中间的jQuery对象也不会显示为常规对象;它显示为原始标记。
另一个问题引用了同样的问题,但并没有真正解释它。我发现我可以使用contents[0].textContent
来解决我的真实问题,但这仍然不能帮助我确切地理解这里发生了什么。有人能向我详细解释一下为什么这一切会如此吗?
大多数jQuery函数都返回一个jQuery对象,为了方便起见,它在大多数情况下看起来和工作起来都像一个数组。引用文档,"jQuery对象包含文档对象模型(DOM)元素的集合"(或"节点")。因此,您可以假设集合的每个成员都是DOM节点,而不是字符串,因此您要查看的对象是Text节点。
在JavaScript中,当您进行字符串串联时,每个不是字符串的操作数都会通过调用其toString()
方法自动转换为一个。因此,正如"1,2,3
"是数组[1, 2, 3]
的字符串表示,"[object HTMLDivElement]
"表示用HTML"<div>
"创建的节点一样,"[object Text]
"表示Text节点。
您可以在此处阅读规范。由于接口Text继承自CharacterData,因此它具有包含字符串本身的data
属性。因此:
var theContents = $( '<p id="thingy">Here is some <em>emphasized</em> text!</p>' )
.contents();
console.log( theContents[0].data );
// => "Here is some "
console.log( "Hello! " + theContents[0].data );
// => "Hello! Here is some "
在DOM中有各种不同类型的节点。元素节点、属性节点、文本节点等
您的<p>
标记DOM结构实际上看起来更像
Element Node [p]
->Text Node [Here is some ]
->Element node [em]
->Text Node [emphasized]
->Text Node [text!]
它只不过是jQuery保留了页面中的DOM结构,以便更好地操作元素
- 如何将输入(type=text)从html表单传递到javascript函数
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 在文本区域中使用jQuery.text()保持换行符
- 用Javascript添加带有#text的tr元素
- 当用户按下回车键时,自动在text区域/text中插入消息
- 有没有一种方法可以列出Ember.Object的所有绑定
- 修正案'text'的元素
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何取消object.prototypes javascript的一个函数
- W3验证器->使用<脚本类型=“;text/javascript”>在html的正文中
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 将*.js文件的内容放入Object中
- 变量未传递正确的值.listAdd 最终成为 “[object text] [object text]” javascr
- 什么类型的对象在控制台中显示为[object Text]
- JQuery text();从解析对象检索信息时返回[object object]
- InvalidSelectorError:xpath表达式的结果是[object Text].它应该是一个元素
- 只要将字段中的Javascript值添加到另一个字符串中,就会显示为[object Text]
- Object #<Text> has no method 'getBoundingClientRec