みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

CGIで書き出したJavaScriptの動作不安定?

JavaScriptの動作不安定につき、ご教示ください。
<a href="aaa.cgi">あああ</a>からCGI (perlで記述、サーバーはApache) を
呼び出し、JavaScriptを含む下記のようなhtmlを返しています。

<html><head>
<script language="JavaScript"><!--
function first() {
window.alert("注意書き");
document.forms[0].elements[0].focus();
}
//--></script></head>
<body onLoad="first()">
<form><input type="text">

IE5/Win&Mac及びNN4.7/Winで「あああ」をクリックすると、設計どおり
注意書きが表示され、警告窓を閉じるとテキストボックスにカーソルが来ています。
ところが、NN4.7/Macで「あああ」をクリックすると、目的ページが一瞬表示
された後に消え、すぐ再描画され、警告窓もカーソルも出ません。この状態でも、
ソースを見ると上記スクリプトは書出されおり、submitすればform送信に支障は
ありません。また、ブラウザボタンで「再読込み」するか「戻る > あああ」で
点滅・再描画の現象なく再表示され、警告窓とカーソルも設計どおりです。

思い当たる原因があるでしょうか? 解消法はあるのでしょうか?
要領を得ない状況説明で恐縮ですが、追加説明は補足要求でご指示くださいませ。

投稿日時 - 2002-04-01 21:11:06

QNo.245274

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

form配列、elements配列が、name指定されていないフォームを参照しようとしております。
NN4.0以降ではname属性を定義していないと正しく動作しません。
form配列、elements配列の指定方法をご存知ですか?
<form name="fm">
<input type="text" name="inp" value="1">
<input type="text" name="inp" value="2">
</form>

nameに同じ属性値が設定されていますのでelements配列として扱う事ができるわけです。
document.forms[0].elements[i].value

他の解決法としてフォーム名、フォーム部品名を明示的に指定することになるかとおもいます。
<form name="fm">
<input type="text" name="inp1" value="1">
<input type="text" name="inp2" value="2">
</form>
document.fm.inp1.value
document.fm.inp2.value

投稿日時 - 2002-04-01 22:09:15

補足

ご指摘の理由とすると、CGIの問題ではなく、JavaScriptの問題ですね。
form を引用しない window.alert() も影響を受けてしまうのでしょうか?
名前を付けるのが面倒だったので、forms[0]とかにしていたのですが、
name="xxx"を付加して結果を報告します。(2~3日かかるかもしれません)

投稿日時 - 2002-04-01 23:10:46

お礼

残念ながら、forms[0]、elements[0]のname指定の効果は実証できて
いません。別に思いついたことがあったので、関連してお尋ねしよう
と思ったのですが、nonameさんになっていたので、別途JavaScriptで
質問を立ち上げました。q=247205

投稿日時 - 2002-04-04 23:45:12

あなたにオススメの質問