- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我想向文本节点添加一个元素。例如:我有一个在元素的文本节点中搜索字符串的函数。当我找到它时,我想用 HTML 元素替换它。有一些标准吗?谢谢。
最佳答案
您不能只替换字符串,您必须替换整个 TextNode 元素,因为 TextNode elements can't contain child elements在 DOM 中。
因此,当您找到文本节点时,生成替换元素,然后用类似于以下的函数替换文本节点:
function ReplaceNode(textNode, eNode) {
var pNode = textNode.parentNode;
pNode.replaceChild(textNode, eNode);
}
对于您想要执行的操作,您必须将当前文本节点拆分为两个新的文本节点和一个新的 HTML 元素。下面是一些示例代码,希望能为您指明正确的方向:
function DecorateText(str) {
var e = document.createElement("span");
e.style.color = "#ff0000";
e.appendChild(document.createTextNode(str));
return e;
}
function SearchAndReplaceElement(elem) {
for(var i = elem.childNodes.length; i--;) {
var childNode = elem.childNodes[i];
if(childNode.nodeType == 3) { // 3 => a Text Node
var strSrc = childNode.nodeValue; // for Text Nodes, the nodeValue property contains the text
var strSearch = "Special String";
var pos = strSrc.indexOf(strSearch);
if(pos >= 0) {
var fragment = document.createDocumentFragment();
if(pos > 0)
fragment.appendChild(document.createTextNode(strSrc.substr(0, pos)));
fragment.appendChild(DecorateText(strSearch));
if((pos + strSearch.length + 1) < strSrc.length)
fragment.appendChild(document.createTextNode(strSrc.substr(pos + strSearch.length + 1)));
elem.replaceChild(fragment, childNode);
}
}
}
}
也许 jQuery 会让这更容易,但理解为什么所有这些东西都以它的方式工作是很好的。
关于JavaScript:在 textNode 中添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963872/
如果你写下面的代码: const e = document.body.firstChild; if (e.nodeType === Node.TEXT_NODE) console.log(e.
假设我有以下... Some text 当我的鼠标经过 Some , Some将返回并且与 text 相同. 如果不将每个节点放入它自己的元素中,这可能吗? 最佳答案 这几乎是不可能的。因为在 Jav
如果我在 HTML 文件中手动编写以下行: 将为每个新行创建一个文本节点。 我想了解 addEventListener 方法的 useCapture 参数。我选择使用 div 元素的 chil
我正在使用单选按钮制作一个简单的多项选择程序。当学生回答错误时,我可以在她的选择后面打一个X,但是如何将X变成红色呢?谢谢你的帮助,杰拉德 1756-1819 funct
我想用 TreeWalker 在文本节点中插入 html 标签,但 TreeWalker 强制我的 html 括号进入 & lt; >不管我试过什么。这是代码: var text; var tree
我想选择 div 元素内的文本并将其用 包裹起来标签。 标签应该只换行到 div 内的文本,而不是子元素内的文本,例如 本例中的标记。 Testing Some more text insi
与直接设置其 textContent 相比,创建 TextNode 并将其附加到 HTML 元素有什么优势? 假设我有一个跨度。 var span = document.getElementById(
我想选择 div 元素内的文本并将其用 包裹起来标签。 标签应该只换行到 div 内的文本,而不是子元素内的文本,例如 本例中的标签。 Testing Some more text insi
我想向文本节点添加一个元素。例如:我有一个在元素的文本节点中搜索字符串的函数。当我找到它时,我想用 HTML 元素替换它。有一些标准吗?谢谢。 最佳答案 您不能只替换字符串,您必须替换整个 TextN
假设我们有以下元素 Hello World .如果我想修改中的内容标签我在javascript代码中有两种方式: document.getElementById("abc").innerHTML="g
有没有办法得到所有textNode的集合文档中的对象? getElementsByTagName()非常适合 Elements,但是 textNode s 不是元素。 更新:我意识到这可以通过遍历 D
有什么方法可以在网络浏览器中更改 DOM textNode 的值吗? 我特别想看看我是否可以更改现有节点,而不是创建一个新节点。 澄清一下,我需要使用 Javascript 来完成此操作。浏览器中的所
我在javascript中插入了几个textNode,但不知道如何用回车符分隔它们。我尝试过输入“\n”、“\r”和“ ”,但它们都不起作用 var textNode = document.creat
我的 HTML 代码: Firebrand will tend to burn any bricks out there. so the best idea is to ignore any acti
我正在使用 HtmlAgilityPack 抓取一些网站。问题是它似乎坚持在大多数地方插入 TextNode,这些地方要么是空的,要么只包含大量的\n、空格和\r。 当我计算 childnodes 时
我有一个这样的 HTML 结构: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor inci
Fiddle here fiddle 的基本解释:当有人开始在单元格中输入内容,然后按 Tab 键移开或取消焦点时,它会在其上方创建一个新行,清空底行,并将焦点移至该新行中的“下一个”输入元素排。它不
One Two Three Four var text = $(".list").contents().filter(function() { return this.nodeType == 3;
这个: import React from "react"; import { render } from "react-dom"; let $container; render( ($cont
对于这个 HTML 节点: foo and bar go ### with baz 我想替换字符串 ###与另一个节点( well ),而不替换整个 innerHTML wrapper div . 预
我是一名优秀的程序员,十分优秀!