CGI-BBS > ホームページ記述言語 > ダイナミックHTML > ネスケで普通のテキストを書き換えたい


カレッヂ
カレッヂ


質問者 ryokutya  投稿日 9/10(月) 15:42:40
現在、ボタンを押したときなどに、
普通のテキストを動的に書きかえようとしており、
JavaScriptで以下のように書いています。
<body>
   :
<div id="foo">書かえ前テキスト</div>
<input type="button" onClick="javascript:chkSKoutei();">
   :
</body>
<script type="text/javascript">
<!--
function chgSKoutei() {
    if( document.all ) {
        document.foo.innerHtml = "書きかえ後テキスト";
    } else if( document.layers ) {");
        document.foo.document.open();");
        document.foo.document.write("書きかえ後テキスト");
        document.foo.document.close();");
    }
}
//-->
</script>

一応ネスケに対応したのですが、ネスケでは動作せず
理由を調べたところ、位置をウインドウ内で固定するなら、
書きかえることができるようになりました。
<div id="foo">
    ↓
<div id="foo" style="position:absolute;top:80px;left:90px;">

しかし、これでは、テーブルなどの中のテキストを書きかえたいとき
表示位置を計算しなければならず、しかも、IEとネスケでは
表示位置がずれてしまっているのです。
ネスケで普通のテキストを書きかえることができて、固定でない
位置に表示する方法はないでしょうか。
また、他のアプローチはあるでしょうか。
よろしくお願い致します。
回答者 しあわせのツボ  [削除]  投稿日 9/10(月) 16:28:15
positionをrelativeにして0,0の位置を指定するとどうなりますか?
質問者 ryokutya  [削除]  投稿日 9/10(月) 19:52:09
お返事ありがとうございます。
さっそく、positionをrelativeにして
位置を0,0にしてやってみたところ、
やったー!ネスケで書かえできました!

といきたかったのですが、なんと
こんどは、IEが<div>のオブジェクトを
認識しなくなって、しまいました(;_;)。
デバッガで探したのですが、見つかりません。
もしかして、<div>のrelativeはIE側がだめ
なのかもしれないですね。
ひーん。
回答者 たろぼー  [削除]  投稿日 10/2(火) 20:40:06
fnction chgSKoutei() {
    if (document.getElementById) { // NN6,IE5
        document.getElementById("foo").innerHTML = "書きかえ後テキスト";
    } else if( document.all ) { // IE4
        document.all.foo.innerHTML = "書きかえ後テキスト";
    } else if( document.layers ) { // NN4
        document.foo.document.open();
        document.foo.document.write("書きかえ後テキスト");
        document.foo.document.close();
    } else

で多分いけると思います。
とりあえず、NN4.75(Win) IE5 SP2(Win) NN6(Mac)では動きました。
(NN4.5(Mac)ではボタンすら押せなかった...HTMLをミスった可能性が大きいけれど)

style指定の部分ですが、positionはrelativeでもabsoluteでも
大丈夫みたいです。
ただし、topとleftが指定されていないとNNでは動きませんでした。

返信(回答)する


Web裏技