質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1487閲覧

DOMParserのインスタンスについて

maisumakun

総合スコア146571

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2022/07/08 03:54

ブラウザサイドJavaScriptにDOMParserというクラスがあって、HTMLやXMLのパースを行えます(MDN)。

…それ自体はいいのですが、特にDOMParserインスタンスで設定すべきことがないにもかかわらず、new DOMParserでインスタンスを作ってから、instance.parseFromStringとする必要があります。

HTML LSいわく、「歴史的経緯でこんな形となってしまっている」とのことですが、「都度(new DOMParser).parseFromString()のようにインスタンスを作成してパースを行う」のと、「事前に一度new DOMParserで作ったインスタンスを変数に入れておいて、毎回の呼び出しを同じインスタンスから行う」のと、どちらがより好ましいコードなのかが気になるところです。

「このような点を考えればこちらがいい」という情報をいただけましたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2022/07/08 04:19

具体的に何と何を比較したいのでしょうか?
maisumakun

2022/07/08 04:27

「インスタンスを使い回すことで悪影響が出ないか」vs「毎回インスタンスを作成するコスト」といったところです。
guest

回答2

0

ベストアンサー

DOMParserの実装は Blink も Firefox も WebKit もとくに重いことはしていないので、「インスタンスを使い回すべき」とまでは言えないです。ごく少量のメモリ確保のコストとコード可読性のトレードオフで好きにしましょう。

投稿2022/07/08 04:58

int32_t

総合スコア21929

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

インスタンスを再利用する予定がないならダイレクトに処理すればよいでしょう
(強制ではないのですきなようにすればいい)

javascript

1const html = `<h1>test</h1> 2<div>test</div>`; 3const dom=new DOMParser().parseFromString(html,'text/html'); 4console.log(dom.querySelector('body').innerHTML);

複数のDOM生成が必要かどうかしだいですよね

javascript

1const html1 = `<h1>test1</h1>`; 2const html2 = `<h2>test2</h2>`; 3const parser=new DOMParser(); 4const dom1=parser.parseFromString(html1,'text/html'); 5const dom2=parser.parseFromString(html2,'text/html'); 6console.log(dom1.querySelector('body').innerHTML); 7console.log(dom2.querySelector('body').innerHTML);

parserを使い回すくらいならcreateDocumentFragmentの方が楽なような気がします

javascript

1const html1 = `<h1>test1</h1>`; 2const html2 = `<h2>test2</h2>`; 3const dom1=Object.assign(document.createDocumentFragment(),{innerHTML:html1}); 4const dom2=Object.assign(document.createDocumentFragment(),{innerHTML:html2}); 5console.log(dom1.innerHTML); 6console.log(dom2.innerHTML);

投稿2022/07/08 04:26

編集2022/07/08 05:10
yambejp

総合スコア117707

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問