プロが教える店舗&オフィスのセキュリティ対策術

var AAA = document.getElementById("hoge1");
AAA.innerHTML = "<div id=\"test0\" class=\"hoge\"><scr"+"ipt type=text/javascript src=hogege.js></scr"+"ipt></div>";

と言うように、<div id="hoge1"></div>を置換したいのですがうまく行きません。

置換した直後にhogege.jsを作動させたいのですが、思いつくのはこの程度です。。(笑
何か別な方法はございませんでしょうか。
IEのみ作動・・。とか言うのはご遠慮願います。
ご教授よろしくお願い申し上げます。

A 回答 (3件)

DOMを利用したinnerHTMLプロパティの書き換えでscript要素を書き出しても、それはうまく動かないと思います。

外部JSファイルを呼び出さない場合でも、innerHTMLプロパティを書き換えてscript要素を書き出したとしても、その書き出すscript要素で定義した処理は実行されないようです。
意図しているところをつかみきれていないかもしれませんが、クリックイベントか何かをトリガーにして、hogege.jsに記述されている内容を実行させたい場合は、hogege.jsの内容に手を加えてそこに定義した処理を関数としてまとめておき、hogege.jsはDOM+JavaScriptでscript要素を書き出して組み込もうとするのではなく、ページソースにscript要素であらかじめ組み込んでおき、トリガーとなるイベントを拾ったら、hogege.jsに定義した関数を呼び出して実行させる形にするのが良いような気がします。

処理内容などの詳細について不明な点も多いので、具体的な言及はできませんが、とりあえず参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございます。
>クリックイベントか何かをトリガーにして、hogege.jsに記述されている内容を実行させたい・・
おっしゃる通りが意図です。
簡単には、複数の「イベント.JS」と、その表示部を狙った「タグ置換.JS」を用意しておき、
ページからそれぞれの「タグ置換.JS」にリンクしたボタンで固定された表示部にイベント起こす。
言い換えれば、固定された表示部でイベントを切り替えると言うものです。

>ページソースにscript要素であらかじめ組み込んでおき、トリガーとなるイベントを拾ったら、hogege.jsに定義した関数を呼び出して実行させる形にする
。。を具体化してみたいと思います。

お礼日時:2004/10/22 13:04

>この文章の意図が分かって貰えませんか?


それならそうかけばいいのに…

DOMを使えばいいですよ。
具体的には、面倒くさいから
調べて下さい。
    • good
    • 0

>IEのみ作動・・。

とか言うのはご遠慮願います。
innerHTMLは、ネットスケープでは、動かないですよ。

あと、innerHTMLは、タグの中を設定する
<div id="hoge1">この中を置き換える</div>
だから、"hoge1"を置き換えたいのなら
<div id="outer"><div id="hoge1">~</div></div>
で、"outer"の方を捕まえないとだめです。

この回答への補足

だからどうなのでしょうか?
>置換した直後にhogege.jsを作動させたいのですが、思いつくのはこの程度です。。(笑
>何か別な方法はございませんでしょうか。
>IEのみ作動・・。とか言うのはご遠慮願います。
この文章の意図が分かって貰えませんか?
ネスケでも作動させたいのですよ。
例として書いたのは、それこそ思いついたものであって、書いておくとこちらの意図することが分かっていただけると思ったからです。
何もそれについてどぉのこぉの言ってもらうつもりではありません。あしからず。

もう一度お聞きします。
何か<b>別な方法</b>はございませんでしょうか?

補足日時:2004/10/21 22:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!