私はそれを調べるときに、3つのテキストノードとおそらくBOLDまたはITALICのような要素が続くWebページDOMに文があるとします。隣接するテキストノードが無意味なので、テキストノードを1つのテキストノードにマージする必要があります。それらを持つ理由はありません。それらを簡単にマージする方法はありますか? おかげDOM内の隣接するテキストノードをJavascriptとマージできますか?
1
A
答えて
0
は多分これはあなたを助ける:
var parentNode = document.getElementById('pelements');
var textNode = document.createElement('p');
while (parentNode.firstChild) {
textNode.textContent += parentNode.firstChild.textContent;
parentNode.removeChild(parentNode.firstChild);
}
parentNode.appendChild(textNode);
<div id="pelements">
<p>A</p>
<p>B</p>
<p>C</p>
</div>
0
ことは可能ですが、親要素を指定する必要があります。 DOM全体とすべてのノードをトラバースすることは可能であるはずですが、それを避けることができればそれが良いでしょう。
nodes = document.body.childNodes;
nodesToDelete = [];
function combineTextNodes(node, prevText) {
if (node.nextSibling && node.nextSibling.nodeType == 3) {
nodesToDelete.push(node.nextSibling);
return combineTextNodes(node.nextSibling, prevText + node.nodeValue);
} else {
return prevText + node.nodeValue;
}
}
for (i = 0; i < nodes.length; i++) {
if (nodes[i].nodeType == 3) {
nodes[i].nodeValue = combineTextNodes(nodes[i], '');
}
}
for (i = 0; i < nodesToDelete.length; i++) {
console.log(nodesToDelete[i]);
nodesToDelete[i].remove();
}
関連する問題
- 1. 特定のタイプのテキストノードと隣接要素をグループ化する
- 2. をjavascript domのテキストノードに置き換えます。
- 3. 範囲内のマージされたセルにのみ隣接セルをマージする
- 4. DOM:ドキュメント内のすべてのテキストノードを取得する(PHP)
- 5. JavascriptではDOM内の要素を複製できますか?
- 6. 隣接する数値をPythonのリストにマージする
- 7. DOM内の最後のテキストノードを見つける
- 8. Javascriptを使って隣接するテーブル行のアイテムの値を取得することはできますか?
- 9. 隣接行のMercurialマージ競合
- 10. 隣接するポリゴンをマージする方法
- 11. ポイントからDOMテキストノードを取得しますか?
- 12. 配列内で最大の隣接する製品を見つける(JavaScript)
- 13. JavaでRangeオブジェクトの開始テキストノードと終了テキストノードを設定することはできますか?
- 14. 隣接セル内のデータにアクセスする
- 15. JavaScriptのDOM idを直接参照できるときにdocument.getElementByIdを使用するのはなぜですか?
- 16. Javascriptでは、DOMを拡張できますか? JavaScriptでは
- 17. いくつかの隣接米国州のSVGパスをマージする
- 18. Git:マージと2つの隣接するコミットを元に戻すにはどうすればいいですか?
- 19. すべてのテキストノードを解析するPHP DOM
- 20. SQL Server - 各テーブルに隣接する3つのテンポラリテーブルの列をマージする
- 21. PHP DOM - 特定のHTMLタグを含むテキストノードを解析する
- 22. DOMパーサ:空のテキストノードのタグを削除するVs <br/>
- 23. rデータフレーム内の列から隣接行列を作成する
- 24. r隣接リストから隣接行列またはエッジリストを作成する
- 25. Javascript:テキストノードを動的に作成してマージするにはどうすればよいですか?
- 26. データフレーム内の隣接する行の間で計算を実行
- 27. プロローグ内でグラフの隣接手続きを書く
- 28. DOMオブジェクトをJavascript配列のインデックス/キーにすることはできますか?
- 29. setAttributeを使用してテキストノード内のテキストを変更できますか?
- 30. matlabは隣接リストを隣接リストに変換します
これに関するいくつかのコードはありますか? –
実際のDOMを破壊したくない場合は、それらのすべてを検索し、最初のものに手作業で結合し、他のものを削除する必要があります。それ以外の場合は、['Element.outerHTML'](https://developer.mozilla.org/en/docs/Web/API/Element/outerHTML)を単独で置き換えることもできます。ほとんどの場合、1つのテキストノードが再び生成されます。しかし、あなたがそれを気にする理由は何ですか? –
*「持っている理由はありません」*:持っていない理由もないようです。これをブラウザに残して管理してください。 – trincot