li元素的子节点给出[#text, <ul>…</ul>, #text]
childnode of li element gives [#text, <ul>…</ul>, #text]
我创建了一个聊天对话。
具有id="topOfStack"
即
document.querySelector('#topOfStack').childNodes
result with:
[#text, <ul>…</ul>, #text]
my problem的HTML代码在
下面<div id="container">
<ul id="chat">
<li class="right">
<ul>
<li><span>Hello</span></li>
<li><span> What are you doing?</span></li>
</ul>
</li>
<li class="left" id="topOfStack">
<ul>
<li><span>Watching Movie</span></li>
<li><span>u?</span></li>
</ul>
</li>
</ul>
</div>
但是,当我动态地创建一个新的"li"元素,并添加到聊天(ul元素)与id="topOfStack从前一个删除,并添加到新附加的元素,子节点只有[<ul>…</ul>]
。
为什么默认添加#text ?或者他们扮演什么角色?
这些文本节点表示ul
标签左侧和右侧的文本。它们应该是用来表示文本的。当您动态地创建一个<li>
标记,其中只有一个<ul>
标记时,该文本就不存在了。您可以使用.children
而不是.childNodes
来获取元素:
document.querySelector('#topOfStack').children; //HTMLCollection: [<ul>...</ul>]
看到从开始的<ul>
到行首的空格了吗?这些都是文本。解析器无法知道这些空白(对您来说)是不重要的,因此为它们创建一个文本节点。
<li class="left" id="topOfStack"> |< line break here
<ul>
^^^^
spaces here
动态创建元素时,没有什么需要解析的。您只需直接将一个元素节点添加到另一个元素节点。
相关文章:
- 如何将输入(type=text)从html表单传递到javascript函数
- 在单独的ul's
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 将所选类别循环到ul>李用加载更多按钮
- 在文本区域中使用jQuery.text()保持换行符
- 使用jquery动态创建ul-li
- 使用下拉列表筛选列表(ul>li)
- 用Javascript添加带有#text的tr元素
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 当用户按下回车键时,自动在text区域/text中插入消息
- 修正案'text'的元素
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- W3验证器->使用<脚本类型=“;text/javascript”>在html的正文中
- :not选择器不适用于ul类-备选方案
- 在验证器中添加自定义规则以检查<ul>具有元素
- 在JQuery中隐藏和显示ul中的特定元素
- 我如何在INPUT TEXT中使用这个Javascript和jQuery
- 使用 jquery 获取外部父 UL
- ul li $(this).text() 什么也没显示
- html lists - JavaScript UL Vertical Text