うさのJavaScript講座

トップへ ご利用方法 新規投函 記事リスト 新着記事 ワード検索 過去ログ
JavaScript質問BBS投函記事詳細

タイトル Re^5: データの動的作成
投稿日: 2006/09/09(Sat) 07:53
投稿者神崎
長文失礼します。

> 1.setAttribute(className,'en') については、神崎様の意図を取り違えていました。さっそく className='en' に修正いたしました。
setAttribute('className','en')と書いた張本人です。
すみません。
setAttributeを使うときは'className'ではなく'class'ですね。

> document.createTextNode(enw.document.body.innerHTML);
この記述ですが、通りすがりさんの記述をお借りしますが

<body><p>これは<a>次項</a>で説明する。</p></body>

となっている場合は、
body.innerHTML="<p>これは<a>次項</a>で説明する。</p>";
ということになります。
この場合の<a>などはタグとして認識されません。

もしcreateElement、createTextNodeなどで、
新しく作成した<div>に"<p>これは<a>次項</a>で説明する。</p>"をコピーしようとすると、以下のようにしなければなりません。

var div=document.createElement('DIV');
var p=document.createElement('P');
p.appendChild(document.createTextNode('これは'));
var a=document.createElement('A');
a.appendChild(document.createElement('次項'));
p.appendChild(a);
p.appendChild(document.createTextNode('で説明する'));
div.appendChild(p);

このようにエレメントとテキストノードを1つずつ組み立てていかないと行けないので、
div.innerHTML="<p>これは<a>次項</a>で説明する。</p>";
のように、innerHTMLにコピーする方が簡単です。

> No.8608 より
elem.innerHTML=enw.document.body.innerHTML;

もちろんchildNodesを走査して、createElementやcreateTextNodeで1つずつ組み立てる方法もありますが、
BBSで説明出来るほど簡単じゃないと思います。
(ソースを書いて勝手に解析してください、というのは私はしません。もしするなら、自分のサイトに掲載して、そのURLを書くでしょう)

body全体をコピーするのであれば、Ajaxっぽいインターフェイスにするよりも、
素直にフレームやインラインフレームを使って表示する方が簡単だと思います。
(隠しフレームではなく、フレームに表示させて、そのフレームを見てもらう)


- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
コメント   手動改行 強制改行 図表モード
URL
暗証キー (英数字で8文字以内)
  プレビュー

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No 暗証キー