商品サンプル画像
BANDAI SPIRITS(バンダイスピリッツ) 30MM ARMORED CORE Ⅵ FIRES OF RUBICON RaD CC-3000 WRECKER ミルクトゥース 色分け済みプラモデル
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
『ToHeart』プレミアムエディション -Steam 【特典】TVアニメ『ToHeart』Blu-ray Disc(全13話・2枚組)同梱
商品ページ
Amazon
収益広告(手動登録)
商品サンプル画像
BANDAI SPIRITS(バンダイ スピリッツ) HG 機動戦士Gundam GQuuuuuuX エグザベ専用ギャン(ハクジ装備) 1/144スケール 色分け済みプラモデル
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
TAMASHII NATIONS METAL ROBOT魂 <SIDE MS> 機動戦士Gundam GQuuuuuuX(読み:ジークアクス) 赤いガンダム 約155mm ABS&ダイキャスト&PVC製 塗装済み可動フィギュア
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
BANDAI SPIRITS(バンダイスピリッツ) 30MM オプションパーツセット ARMORED CORE Ⅵ FIRES OF RUBICON WEAPON SET 05 色分け済みプラモデル
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
記事の概要
htmlタグ混在のテキストをhtmlタグとプレーンテキストで分けるJavaScriptコード
作成日:2025-06-20
最終更新日:2025-06-20
記事の文字数:2162
本記事のトピック
  • 概要
  • JavaScriptコード
htmlタグ混在のテキストをhtmlタグとプレーンテキストで分けるJavaScriptコード
概要

「よくある質問は<a href="/">こ<span>ち</span>ら</a>です」 というようなhtmlタグ混在のテキストを、htmlタグとプレーンテキストごとに分けるJavaScriptコードです。

「よくある質問は<a href="/">こ<span>ち</span>ら</a>です」 であれば、以下のような出力になります。

const htmlText = よくある質問は<a href="/">こ<span>ち</span>ら</a>です; const separatedHtmlText = separateHtmlText(htmlText); console.log(separatedHtmlText); //[ // { // "htmlText": "よくある質問は", // "type": "text", // "tag": null // }, { // "htmlText": "<a href=\"/\">", // "type": "tagOpen", // "tag": "a" // }, { // "htmlText": "こ", // "type": "text", // "tag": null // }, { // "htmlText": "<span>", // "type": "tagOpen", // "tag": "span" // }, { // "htmlText": "ち", // "type": "text", // "tag": null // }, { // "htmlText": "</span>", // "type": "tagClose", // "tag": "span" // }, { // "htmlText": "ら", // "type": "text", // "tag": null // }, { // "htmlText": "</a>", // "type": "tagClose", // "tag": "a" // }, { // "htmlText": "です", // "type": "text", // "tag": null // } //]
JavaScriptコード

実際のJavaScriptコードは以下です。

function separateHtmlText(htmlText){ const htmlTextElm = new DOMParser().parseFromString(htmlText, 'text/html').body; const results = separateNode(htmlTextElm); return(results); } function separateNode(nodes){ const results = []; for (const child of nodes.childNodes) { if (child.nodeType === Node.TEXT_NODE) { // プレーンテキスト results.push(createSeparateObj(child.textContent, 'text')); } else if (child.nodeType === Node.ELEMENT_NODE) { // タグ開始 const tagName = child.tagName.toLowerCase(); const tagAttrs = [...child.attributes].map(attr => `${attr.name}="${attr.value}"`).join(' '); const tagOpen = `<${tagName}${tagAttrs ? ' ' + tagAttrs : ''}>`; const tagClose = ``; results.push(createSeparateObj(tagOpen, 'tagOpen', tagName)); const r = separateNode(child); results.push(...r); results.push(createSeparateObj(tagClose, 'tagClose', tagName)); } } return results; function createSeparateObj(htmlText, type, tag = null){ const result = { text: htmlText, type: type, tag: tag, }; return result; } }

上にも書いてありますが、基本的な使い方は以下です。

const htmlText = よくある質問は<a href="/">こ<span>ち</span>ら</a>です; const separatedHtmlText = separateHtmlText(htmlText);

文字列ではなく、html要素自体を渡したい場合は以下で動くはずです。

const targetElm = document.getElementById('targetElmId') const separatedHtmlText = separateNode(targetElm);
コメントログ
※コメントは最新50件が表示されます
コメント投稿




画面下部の「コンタクト」からも連絡可能です。
管理人ツイート
商品サンプル画像
タカラトミーアーツ(TAKARATOMY A.R.T.S) 【初回生産限定】 BOX ひみつのアイプリ アイプリカード♪コレクショングミVol.4 グレープ風味 グミ/食玩 【BOX販売/20個セット】
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
BANDAI SPIRITS(バンダイ スピリッツ) フィギュアライズスタンダード 機動戦士Gundam GQuuuuuuX アマテ・ユズリハ(マチュ) 色分け済みプラモデル
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
BANDAI SPIRITS(バンダイ スピリッツ) PG UNLEASHED 機動戦士ガンダム 逆襲のシャア νガンダム 1/60スケール 色分け済みプラモデル
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
グッドスマイルカンパニー[GOOD SMILE COMPANY] ねんどろいど ウマ娘 プリティーダービーヴィルシーナ ノンスケール プラスチック製 塗装済み可動フィギュア
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
管理人作品宣伝
ChatGPT-アイコンと名前変更
Chrome 拡張機能 / 最終更新:2025-05-29
ChatGPTのアイコン等を自分の好みに変えられます。好きなキャラと話しているような気…ChatGPTのアイコン等を自分の好みに変えられます。好きなキャラと話しているような気分になれるかもしれません。

ChromeWebストアで閲覧する利用素材等の詳細情報
AIの考えた怖い話-Part01
動画 / 最終更新:2024-11-28
怪談系の怖い話を載せています。特に設定部分は人の手が入ってますが、なるべく生成AI(C…怪談系の怖い話を載せています。特に設定部分は人の手が入ってますが、なるべく生成AI(ChatGPT)を利用して書いています。

YouTubeで閲覧するニコニコ動画で閲覧する利用素材等の詳細情報
作品一覧はこちら
関連ページ
本サイトのタグ一覧
NovelAIR18VRoidWebサイト作成Webツールととモノ。アークナイツアークナイツ-ステージ攻略日記アズールレーンアズールレーン-日記ウマ娘ギャラリーゲームデビラビローグネットスラング系プログラミングホラーポケットタウン怪談気ままな日記情報技術情報技術-WebAPI知的財産権統合戦略白夜極光本サイトについて魔王スライム様がんばる!漫画
人気記事
メイド・オブ・ザ・デッド-攻略お助け情報
最終更新日:2024-05-01
スコア:767.2768 pt
ネタバレ注意! 本ページは『メイド・オブ・ザ・デッド』の情報を記録しているものです。 攻略の参考に…
記事を閲覧する
ポケットタウン_パズル一覧
最終更新日:2025-05-02
スコア:708.4291 pt
グレーのピースの数 (Number of gray pieces):検索グレーピースの数を入力して、…
記事を閲覧する
剣と魔法と学園モノ。2G - パーティ編成確認ツール
最終更新日:2024-05-09
スコア:175.5618 pt
ツール概要 ととモノ。2Gのパーティ編成を考える際に使うツールです。 あくまでストーリークリアまで…
記事を閲覧する
アークナイツ-常設商品-理性換算
最終更新日:2024-04-28
スコア:144.5000 pt
概要 "常設商品でお得な商品はどれか"というのを理性に換算して一覧化したものとなります。 絶対的に…
記事を閲覧する
本サイトについて
最終更新日:2025-06-11
スコア:125.0756 pt
本サイトの概要 概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報に…
記事を閲覧する
黒バス:キセキの世代級の人たちの技一覧
最終更新日:2024-07-21
スコア:116.3462 pt
黒バスのキセキの世代級の人たちの技一覧です 概要 黒バスのキセキの世代級の人たちの技を記載したもの…
記事を閲覧する
ゲーム『イカれた狩場の看板娘』の紹介・レビュー
最終更新日:2025-05-01
スコア:114.6531 pt
記事概要 イカれたゲームを紹介するぜ! イカれた狩場の看板娘! 以上だ! ちなみにそんなイカれてな…
記事を閲覧する
地獄先生ぬ~べ~で好きな切ないエピソード
最終更新日:2025-05-19
スコア:91.1928 pt
概要 初代というべきか、週刊少年ジャンプで連載されていた地獄先生ぬ~べ~の切ないエピソードの中で好…
記事を閲覧する
最新記事
htmlタグ混在のテキストをhtmlタグとプレーンテキストで分けるJavaScriptコード
最終更新日:2025-06-20
概要 「よくある質問は a href="/" こ span ち /span ら /a です」 とい…
記事を閲覧する
htmlタグ混在のテキストを1行ずつ左から右へワイプ表示する - JavaScript / CSSコード
最終更新日:2025-06-16
JavaScript全文コード 使い方 以下のJavaScriptとCSSコードを読み込んで、Te…
記事を閲覧する 返礼特典
htmlタグ混在のテキストを1行ずつ左から右へワイプ表示する
最終更新日:2025-06-16
概要 ここでは以下のようにテキストを一行ずつ左から右に表示するJavaScriptコードを載せてい…
記事を閲覧する
本サイトについて
最終更新日:2025-06-11
本サイトの概要 概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報に…
記事を閲覧する
商品サンプル画像
バンダイ(Bandai) ドラゴンボール40周年記念 オリジナルイラストレーション シールウエハース 20個入 食玩・ウエハース
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認