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

質問があります。

<html>
<head>
<script type="text/javascript">
<!--
str = "a";

function func(){
document.open();
document.write( str );
document.close();
}
-->
</script>
</head>
<body onload = "func()">
</body>
</html>

というソースを組んだのですが、IE6なら正常に表示できたのにNetscape7だと表示されませんでした。
document.write("a")と記述すると表示できたのですが・・・。
本来組みたいソースは上記のstrが長文かつ多用するために簡略化したいのですが、何か良い方法はあるでしょうか?

A 回答 (2件)

実際に試してみたのですが、関数内で呼び出している変数が、document.write()メソッドのところだけ正常にグローバル変数として渡っていないようです。


なぜこういう現象がおきているのかはわからないのですが(バグ?)、とりあえずの回避策として、関数内でローカル変数を作り、その中にdocument.write()に渡したいグローバル変数を入れて、そのローカル変数を渡してやった場合は、表示できるようです。

str="a";

function func(){
var str1=str;
document.open();
document.write(str1);
document.close();
}

このような感じで、関数内でローカル変数を新たに定義し、それをdocument.write()に渡せば回避できるようですね(varは必須のようです)。

参考になれば… 間違ってたら、ごめんなさい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確かに表示されました。
当面は教えていただいた方法で対処します。

お礼日時:2003/08/21 10:29

こんばんわ。



色々試してみた結果、document.open()をはずしたらネスケでも表示されました。
※document.close()も両方はずしても表示はされるようです。

あまり理解できていないので、
参考URLを記載しますね

参考URL:http://www.openspc2.org/JavaScript/ref/document/ …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確かに表示されました。
ただ、document.open()とdocument.close()は外したくないので、申し訳ないですがlead1976さんの方法で対処しようと思います。

お礼日時:2003/08/21 10:24

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