- ベストアンサー
HTMLの取得と解析について
- フォームのtextareaにHTMLを入力して、必要なタグを取得する方法についての質問です。
- テキストエリアの値からgetElementsByTagNameを使用してtableタグを取得しようとしていますが、エラーが出ています。
- パースして再利用する良い方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
textareaの内容を、ダミーの要素に突っ込めば DOM ツリーの中に入りますね。 (下の例では createElemetしましたが、<div id="scratchPad" style="display:none"> などの要素を予め用意してもok) function test() { var buf = document.createElement('div'); // ダミーの要素を生成して buf.innerHTML = document.form1.src.value; // 貼りつけた内容を突っ込む elm = buf.getElementsByTagName('table')[0]; // (注:[0]で最初のTABLEだけを拾ってます) dv = document.getElementById('test'); // ここに結果を入れる…のだけど if (window.navigator.userAgent.toLowerCase().match("firefox")) { dv.removeChild(dv.childNodes[0]); // どんどん増えるとまずいのでremoveChildしておく dv.appendChild(elm); // 子要素として追加 }else{ dv.innerHTML = elm.outerHTML; // 貼り付け } } /* 上記 if A else B について、 Firefox 8.0 では A のみ成功 IE 8.0 では B のみ成功 Google Chrome 15.0, Opera 11.52 は A, B ともに成功 */
その他の回答 (1)
- t_ohta
- ベストアンサー率38% (5253/13738)
getElementsByTagNameはDOMツリーの中から指定されたタグを探し出すファンクションです。 org_src の中身はテキストデータであって、ドキュメントオブジェクトでは無いのでgetElementsByTagNameは使えません。 org_src の中身から正規表現などを使ってtableタグを抽出する必要があります。
お礼
回答有難うございます。 正規表現を使わないとダメなんですね。 DOMツリー化する方法があれば楽なんですが、とりあえず正規表現で頑張ってみます
お礼
回答有難うございます。 DOMツリー化できるんですね!!! やってみると、私の方でも取得できました。 本当にありがとうございました。