CGI-BBS > JAVA/JavaScript > JavaScript > SSL内でエラー”・・はオブジェクトではありません"が出る


カレッヂ
カレッヂ


質問者 とりりん  投稿日 2004/4/1(木) 16:09:53
こんにちは
二つのテキストボックスから必要な値を取得して、計算結果を別のテキストボックスに
表示するjavascriptを作っています。
formの送信はせず、javascriptだけで作業を完結します。

別のスクリプトで、計算の元となる値に3ずつカンマを入れているので、
計算ボタンをクリックした時点で計算の元となる値をテキストボックスから取得し、
3桁ごとに入ったカンマを取り除いてから実際の計算式に値を返します。
その計算の元となる値を参照する時点で
「"document.calc.elements"はNullまたはオブジェクトではありません」というエラーが出ます。
これはSSL内でcgiで吐き出したhtmlで動かすときだけおこります。
IE6.0 NN7.1でも同じでした。
javascript自体は外部ファイルです。
以下のようなソースです。

・・javascript・・
j01 //カンマを取り除く
j02 function shoki(nam){
j03	Settei = document.calc.elements[nam]);
j04	Setteigo = Settei.value.replace(/,/g,"");
j05	return Setteigo;
j06	}
j07
j08 //計算する
j09 function CalcA(){
j10	gou1=shoki('A');
j11	gou2=shoki('B');
j12	gou_k = Math.round((gou1-0)+(gou2-0));
j13	gou_kcom = Henkan(gou_k); //3桁カンマをつけるfunction Henkan
j14	document.calc.C.value = gou_kcom;
j15	}
----------------------------------
・・html・・

h01 <form name="calc>
h02 <input type="text" name="A" onChange="Henkan(this)">+
h03 <input type="text" name="B" onChange="Henkan(this)">=
h04 <input type="text" name="C">
h05 <input type="button" value="計算" onClick="CalcA()">
h06 </form>
以上 です。


ひとつのヒントになると思うのですが、
最初、h02を<・・name="A" onChange="Henkan('A')">として、
受け側のjavacsriptで
function Henkan(nam){
Atai = document.forms[0].elements[nam].value;
・・・・・
}
としていたときは
"document.forms.0.elements"はNullまたはオブジェクトではありません。
(0の前に確かに.が入ってました。)
というエラーが出ていました。これを(this)で飛ばしてそのまま使ったら
エラーが出なくなりました。

以下html-
<・・onChange="Henkan(this)">

以下javasript-
function Henkan(obj){
Atai = obj.value;
・・・・・
}

なので、どうやら[ ]を認識してくれてないのかと思ったりもするのですが
もう昨日からtry&errorし続けてます。

なにかこれについてご存知の方はいらっしゃらないでしょうか?

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:perlをはじめよう
FTPソフト:ffftp
サーバ移転:していない
改造:していない
CGI習熟度:expert

回答者 sim  [削除]  投稿日 2004/4/1(木) 18:43:43
SSLは関係無いのではないでしょうか?
CGIで出したソースをそのままローカルに別名保存するなりして動作するのでしょうか?

まずはここの閉じ括弧をとってみてください。
Settei = document.calc.elements[nam]);
質問者 とりりん  [削除]  投稿日 2004/4/1(木) 20:59:03
simさん、アドバイスありがとうございました。
アドバイスを受けて、落ち着いていろいろ試すうち、原因がわかりました。
HTML中で一箇所"を閉じていないところがありました。
ほかのjavascriptは動いていたし、画面の表示にも問題なかったのですぐ気づきませんでした。
本当にしょうもないことで面目ございませんm(__)m。平謝りです。。。

余談ですが、以前、CGI製作中にSSL&IE6.0でしかおこらないバグというのを体験し、痛い思いをしたので
ついSSLを疑ってしまいましたが、そうではありませんでした。
よく通常のdocでもsecure_docでも変りはないといわれますが、基本的にはそうなんでしょうね。

本当にお騒がせしてすみません。でもいろいろ試して苦手なjavascriptのバグ解決方法を勉強しました。
ありがとうございました。 以後気をつけます(TT)。。。

このページは終了したので返信(回答)は書きこめません
 


Web裏技