WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:前の履歴を残さない方法

0:[投稿] ひよっこ [2007/01/26 13:42 ] [環境:IE6.0 わかりません]

毎回大変参考にさせていただいています。
ありがとうございます。
毎回で申し訳ないのですが再び質問させていただきたいと思いまして
投稿しました。

一つのファイルで計算問題をさせて、
結果をサブウィンドウで開くようにしました。

計算自体は大丈夫なのですが、
計算前にF5を押したりして更新させないと前の履歴が残ってしまって
きちんと計算をしてくれません。
このような場合、document.clear() というものを使うのかなと
思いまして色々な場所に入れてみたのですが、場所が違うのか
書き方が違うのかクリアができませんでした。

下のソースは計算をします。
受け渡し3.html
<html>
<head>
<script type="text/javascript">
<!--
var sData="";
var ans=0;
var x=0;
function calc() {
    if(document.form.elements[x].value != "") {
        for (x=0; x<document.form.elements.length-1; x++)
            ans+=eval(document.form.elements[x].value);
        window.open('child3.html','','width=200,height=200');
    }else{
        alert("数値を入力して欲しい");
    }
}
    P=document.form.elements[x].value;
    P.document.clear();
-->
</script>
</head>
<body>
<form name="form">
<input type="text" size="5">
<font size="5">+</font>
<input type="text" size="5">
<input type="button" value="result" onClick="calc();sData=ans">
</form>
</body>
</html>


下のソースは上の受け渡し3.htmlを受けて計算結果を
表示します。
child3.html
<html>
<head>
<script type="text/javascript">
<!--
function init() {
    document.chil.child.value=opener.sData;
}
-->
</script>
</head>
<body onload="init()">
<form name="chil">
result=
<input type="text" name="child" value="" size="5">
</form>
</body>
</html>

ちなみに英文字や全角の判定はしていません。

宜しくお願いします。



1:[回答] ティルド [2007/01/26 17:15 ]

> document.clear()
この関数の意味は知らないのですが(ぁ)原因はそういうところにはありません。

まず、ボタンがクリックされるとansに各テキストボックスの値を足しているようですが・・・。
ansの初期化が毎回行われてないためにそうなるのだと思います。

結局のところ、onClick="calc();sData=ans;ans=0;"で解決すると思います。
もしくは
> var sData="";
> var ans=0;
> var x=0;
というところを、function calc()のブロック内にいれてください。


2:[完了] ひよっこ [2007/01/29 14:55 ]

返信していただいていたのに遅くなりまして
すみません。

onClickした時に同時に初期化してしまえばよかったのですか。
確かにonClick="calc();sData=ans"としていたのだから
そうするべきでしたね…。

初期化だからクリアしなくてはいけないような気がしていて
わざわざ面倒な方法を考えてしまっていました。
おかげで計算がきちんとできるようになりました。
ありがとうございました!

回答(必須): 状態:

お名前(必須):

URL:




[戻る]