将br插入文本节点
Inserting br into a textnode
这可能看起来很奇怪。我有一个div的id为'quotes',里面有一个blockquote。我认为如果引用的文本是诗歌,添加换行符会很有趣,我认为您可以使用'@'作为条件换行符,然后用br元素替换它,如下所示:
function addBr() {
var c = document.getElementById("quotes");
var t = c.getElementsByTagName("blockquote");
var reg = new RegExp("@", "g");
for (var i = 0; i < t.length; i++) {
var r = t[i].lastChild.nodeValue.match(reg);
if (r !== null) {
var text = t[i].childNodes[0];
var q = t[i].lastChild.nodeValue.indexOf("@");
var x = document.createElement("br");
t[i].insertBefore(x, text.splitText(q));
t[i].lastChild.nodeValue = t[i].lastChild.nodeValue.replace(/'@/g, "");
}
}
}
这是可行的,但只适用于第一个实例,所以我需要一个循环,但我不能弄清楚。div应该像这样:
<div id = 'quotes'>
<blockquote> Some line, @ Some line, @ Some line@ </blockquote>
</div>
从文本节点内@
的最后一个匹配开始并向后工作。下面的函数做到了这一点,并且还具有消除不必要的正则表达式的好处,使用更清晰的变量名并且更短:
function addBr() {
var c = document.getElementById("quotes");
var t = c.getElementsByTagName("blockquote");
for (var i = 0; i < t.length; i++) {
var splitPos, textNode = t[i].lastChild;
while ( (splitPos = textNode.data.lastIndexOf("@")) != -1 ) {
var newTextNode = textNode.splitText(splitPos);
// Remove the @ from the start of the new text node
newTextNode.deleteData(0, 1);
var br = document.createElement("br");
t[i].insertBefore(br, newTextNode);
}
}
}
我建议这样做:
function addBr() {
var c = document.getElementById("quotes");
var t = c.getElementsByTagName("blockquote");
for (var i = 0; i < t.length; i++)
r.innerHTML = r.innerHTML.replace(/@/g, "<br />");
}
什么是"条件换行"?我在你的代码中没有看到任何决定何时换行的东西
相关文章:
- 我可以在网页正文中插入文本链接吗
- JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本
- 使用.format在一些HTML代码中插入文本,会出现错误(Python)
- JavaScript 在文本区域中的特定位置插入文本
- CKEditor - 插入文本在 setData 之后不起作用
- 在两个括号内插入文本 - Javascript
- 将值插入文本区域可以绕过所需的检查
- Javascript E4X-返回节点及其子节点的文本
- Applescript运行Javascript,并在提示中插入文本
- 如何在Web SQL数据库中逐行插入文本文件
- 如何在Wysihtml5沙盒编辑器中的光标位置插入文本
- 节点 Webkit 文本到语音 API 不起作用
- 如果在 IE 中最后附加光标,则在光标位置的文本区域中插入文本
- 是否可以在文本区域中插入文本并更新撤消/重做队列
- 使用节点的文本文件中的 CSV.js(CSV 包)
- Javascript:在指定行插入文本
- 在文本字段中插入文本后聚焦光标
- 在空节点(如文本节点)中添加文本/html
- 使用 Greasemonkey 在现有元素之前插入文本节点时出现问题
- 将br插入文本节点