電子書籍の厳選無料作品が豊富!

DOMで指定したエレメント内にdocument.write()で排出される文字を挿入する必要があり、実装方法に困っております……。
こんな感じです。

<div id="test"></div>
<script type="text/javascript">
function func01() {
document.write("<strong>書き込むデータ</strong>");
}
document.getElementById("test").innerHTML = func01();
</script>

これを実行しますと、当然かもしれませんが単に"書き込むデータ"がテキストでブラウザに表示されてしまい、指定したidであるtestのセクション内に出力されません。
func01()では制約上どうしてもdocument.write()を使用する必要があり、何とかこの値を<div id="test"></div>の中に書き込めないかなという状態です。

どなたかアドバイスをお願いできれば幸いです。

A 回答 (6件)

No5が言うような手合いの物で、手元にscriptファイルを持って来れないというのなら、まぁdocument.writeされるであろうblockをぶっこ抜いて来るしかないね。



もしそうだとしたら
document.getElementById("test").innerHTML = func01();
とfunc01()とやらが独立したjsになっている筈だから

件のfunc01が有るjsを何かしらのblockで囲んでidを振ってgetElementByIdで取り出すのが無難じゃないかな。



そうでなくてテキスト部分としては質問文の様に繋げられているなら、funcにreturnを書く事ができない筈が無いので文字列をreturnすれば良い筈だけど・・・
    • good
    • 0

察するに、


document.writeを使った何かしらのAPIがあって、
その内容は自分で変更できない…
という解釈で、一応対応策を考えてみました。


<div id="test"></div>
<script type="text/javascript">

// ↓何の変哲もないdocument.writeです
document.write('foo');

// ↓これを実行した後は…
( function( f ) {
var s = document.write;
document.write = f;
document.write.res = function() {
document.write = s;
}
})(
function() {
el = document.getElementById( 'test' );
return function( t ) {
el.innerHTML += t;
};
}()
);

// ↓id="test"に書き出される
document.write('bar');

// このメソッドを実行すると…
document.write.res();

// ↓元のdocument.writeに戻る
document.write('baz');

</script>
    • good
    • 0

>制約上どうしてもdocument.write()を使用する必要があり



たぶん、あなただけがそう思っているのでは。
と言うのも、何をしたいのか、よくみると記載されていません。

innerHTMLは、テキストの代入メソッドですよね。
それに関数を指定すれば、その結果(戻り値)はテキストでないと動作しませんよね。

document.writeは、documentオブジェクトに対して書き込む命令であって、ストリームやパイプに書き込む事はできません。そこが勘違いをしています。

つまり、DOSやCでいえば標準出力に出力する関数を指定する必要があるわけです(echo or printf)。
    • good
    • 0

関数の中のwindow.document.write()の


documentオブジェクトは何故グローバルではないのだろう?
ECMAに定義されているのかしら
    • good
    • 0

回答1さんがいいたいことは、document.write()を使う使わないの問題ではなく、


return "<strong>書き込むデータ</strong>"
をfunc01()に「追加」したら?ということだと思うんだけど。それも禁止?
    • good
    • 0

なんで書き込む文字列をreturnさせないの?



innerHTMLに代入が何事だか もうちょっと理解した方が良いのでは・・・
http://www.google.com/search?lr=lang_ja&q=javasc …

この回答への補足

ありがとうございます。が、returnで書き込めないので質問をしてたりします。

補足日時:2009/10/02 01:04
    • good
    • 0

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