问题标签 [textnode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 按顺序获取带有父元素的文本节点(比看起来更难)
考虑以下标记:
我需要按顺序获取文本节点和包含它们的元素,如下所示:
1:"Hello, my "
,<div>
(HTML元素)
2:"name"
,<span>
(HTML元素)
3:" is John"
,<div>
(HTML元素)
这需要以一种允许我稍后获得 HTMLElements 的 CSS 样式的方式完成。
我已经尝试过的:
这会产生一个不连续的结果集,如下所示:
1:"Hello, my "
2:" is John"
3:"name"
但是,我可以访问它们的父元素,所以这完成了一半的工作。
因此,主要问题是:如何以与文档中相同的顺序获取文本节点?
javascript - 等价于文本的 innerHTML
我正在寻找相当于的文本innerHTML
,即
然后innerText(p)
应该返回Hello, World!
。
注意:我知道 jQuery 的text()
功能。我想知道它是如何实现的,这样我就可以对某些节点进行特殊处理,比如插入额外的空白。
html - 为什么我们在一个简单的文档中得到空文本节点
鉴于这个简单的代码
我在 IE9 中得到很多空文本节点,如下所示。
在经历了类似的问题后,我尝试了以下方法。
- 关闭所有标签。
- 删除所有空格。
- 使用没有 BOM 的 UTF
- EOL = unix 格式
它没有帮助。没有什么严重的车针想知道这是为什么。
javascript - 如何在元素后获取文本节点?
使用 jQuery。我有以下html:
我怎么会只得到文字。我应该使用什么选择器?(我需要“全世界”)
我也无法触摸HTML...
javascript - JavaScript 查找所有文本节点并以字符串形式返回
我需要定义一个名为 getText() 的函数,它查找指定节点处或下方的所有 Text 节点,然后提取并连接节点的文本内容并将其作为单个 JavaScript 字符串返回。在 getText() 中,它将是一个被调用的警报
我的正文内容将是:
javascript - IE8 及以下未定义的 Javascript 'Node'
我有以下代码似乎在除 IE8 及以下版本之外的所有浏览器中都可以正常工作。
它获取元素的内容并删除子元素中包含的所有内容,只留下该元素的文本。
我得到的错误说这Node
是未定义的 - 所以我在 js 文件的顶部声明它,然后得到相同的消息,TEXT_NODE
所以我声明它。然后我收到以下错误:
Unable to get property 'TEXT_NODE' of undefined or null reference
谁能帮我解决这个问题,或者谁能想到更好的方法来获得相同的结果。谢谢。
dom - Knockout.js 文本绑定 - 折叠多个空格
似乎在使用 Knockout 的文本绑定时,多个空格会合并为一个。例如:
函数 VM() { this.Notes = ko.observable(); }
var vm = 新的 VM();
ko.applyBindings(vm);
这是一个证明这一点的小提琴:http: //jsfiddle.net/9rtL5/
我发现在 jsfiddle 中,空间在 Firefox、Chrome 和 IE9 中被压缩。奇怪的是,虽然在我的应用程序中 IE9 不会压缩它们,但其他的却可以。
我的理解是 Knockout 使用 HTML 文本节点来呈现值。我在创建文本节点时发现了有关保留空格的相关问题:
Knockout 是否应该适当地处理转换空间?我真的不想为此使用自定义绑定处理程序。
实际上,我在选择中的显示文本的上下文中遇到了这个问题,并且在调试该问题时才发现它也与简单的文本绑定有关。我认为选择问题是相同的。
jquery - 如何在 jQuery 中实现任意文本节点选择
我已经意识到最近几次我需要在一些 jQuery 选择器中加入文本节点选择。
jQuery 本身并不真正支持文本节点。大多数关于此类问题的答案都建议使用.contents()
,但这并不真正属于“选择器”,而是“遍历”。因此,它只给出直接子节点,它给出所有子节点,而不仅仅是文本节点。
我发现我需要在任意标记的文本中选择所有文本节点,所以我感兴趣的一些文本节点将是孙子、曾孙等:
因此,实现这一点而不是尝试实现递归调用的最具表现力的方法.children()
是将 jQuery 选择器扩展为如下所示:
where§
代表一些新的语法,我将添加到表示文本节点的 jQuery 中。我必须找到一些未使用的 ASCII 符号或类似:odd()
扩展的东西:
如何以这种方式扩展 jQuery 的选择器引擎?我假设我想使用他们现有的 DOM 遍历方法,而不必求助于构建新方法?
或者也许有一个表达技巧.contents()
,我没有想到它可以做我想做的事,而无需我扩展 jQuery?
我的用例:我想在用户脚本(greasemonkey 等)中对来自第三方网站的文本进行自定义“突出显示”。通过“自定义”,我的意思是不同的模式会得到不同background-color
的 s 等等。所以我需要所有的文本节点,无论它们的深度如何,我不希望它们周围有标签,我也不希望所有文本都像.text()
这样给我吗。
javascript - 是否有替代 jQuery / sizzle 的方法支持 textNodes 作为选择器中的一等公民?
我发现我需要完全支持 DOMtextNode
的选择器,而 jQuery 没有提供。
jQuery 忽略文本节点,可能是因为大多数页面在标签之间有大量不相关的空白节点,各种浏览器可以区别对待。
关于文本节点的 jQuery 问题的大多数答案归结为使用.contents()
返回所选项目的所有子节点的函数,包括文本节点 - 所有其他 jQuery API 都忽略文本节点。
通常你不需要一些不容易建立的东西,.contents()
但我发现自己处于这种情况。
我的用例是我想在我无法控制的第 3 方网页中定位并包装任意运行的文本。(想想浏览器扩展或用户脚本。)
到目前为止,我很高兴在 DOM 中查找所有文本节点,或者找到一个包含我感兴趣的所有文本节点并用于.contents()
迭代它们的包装元素。
但是现在我发现有时我需要 jQuery/sizzle 选择器的全部功能来将我的注意力缩小到类中类的某些可能性等。
我考虑了使用textNode
选择器扩展 jQuery 的方法,但这似乎是不可能的,因为忽略文本节点的普遍规则会在调用我的扩展之前过滤掉其中的许多节点。
因此,我正在寻找其他一些 JavaScript 工具,它提供类似选择器的功能,但允许选择在其选择器表达式语法中任意混合的文本节点。
这是我可能需要做的一个例子:
这是一个我个人还不需要但很容易想象的例子:
当您可以寻址(选择)文本节点的直接父级时,迭代它们.contents()
很容易,而不是当您只能识别某个任意祖先但想要其下方的所有文本节点时,这对于元素节点来说当然是微不足道的.
javascript - 意外的 childNodes 行为
我设置了一些简单的 HTML 和 JS 代码,以便更好地处理遍历 DOM。
这是我的 HTML:
这是我的 JavaScript:
这是我得到的控制台日志:
是什么赋予了?那个文本节点到底在哪里,那不是标题节点吗?我很困惑并且已经玩了一堆(并且发现根据js,body节点实际上是HEAD的第三个孩子,但是查看对我来说没有意义的HTML)。我可以看到它是第三个后代或其他东西,但我认为孩子意味着直接孩子......任何帮助表示赞赏!