Nullまたはオブジェクトではありませんのエラー

このQ&Aのポイント
  • HTMLのフォームで特定の操作を行う際に、FireFoxブラウザでは正常に動作するが、IE6では「Nullまたはオブジェクトではありません」のエラーが発生する問題があります。
  • フレームを使用しているページで、特定のフォームや画面遷移を行っている部分に原因がある可能性があります。
  • 解決策をご存知の方がいらっしゃいましたら、教えていただけると助かります。
回答を見る
  • ベストアンサー

Null またはオブジェクトではありませんのエラー

HTML部で <FORM NAME="frm1" METHOD="post" ACTION="xxx.html">  <INPUT TYPE="hidden" NAME="txt1"> </FORM> javascriptで document.frm1.txt1.value = "hoge"; document.frm1.submit(); のように記述しています。 FireFoxブラウザでは期待通りの動きをするのですが、 IE6では「document.frm1.txt1はNullまたはオブジェクトではありません」 とエラーが出てしまい、画面遷移しません。 因みにページはフレームを利用しており、 フォームや画面遷移はメインフレームでしか使っていないので、 フレーム名も特につけておりませんし、 targetの記述も使用しておりません。 そこらへんに原因があるのでしょうか。 それにしてもFireFoxでは可、IEではエラー というのも解せないです。 どなたか分かる方いらっしゃいましたら ご教示願います。

質問者が選んだベストアンサー

  • ベストアンサー
noname#39970
noname#39970
回答No.2

>document.frm1 alert(document.frm1); これが何と出るか。 場合によってはこれも「document.forms[x];」系にしてみる あと一応確認しておくけど function(){} じゃない限りはHTML上に書かれた順に実装される事になってる。 まさかformが現れる前に実行させてないよね?

Claudia
質問者

お礼

解決しました。 “>”が一つ抜けてるところがありました。。 forms[n] elements[n] 参考になりました。 今までnameでしか操作したことなかったので。 ありがとうございました。

Claudia
質問者

補足

>まさかformが現れる前に実行させてないよね? それは大丈夫です、以前何度か悩まされました 核心に近づいてきました。 ソース内にフォームは4つありまして、 name指定でもforms配列指定でもお目当てのフォーム(2個目のフォーム) のみが認識されていない。 1個目のフォーム(ソースがやたら長い)のどこかに不備があり、 1個目のフォームの閉じタグが無効になっているのかもしれません。 これから犬の散歩後、じっくり見直してみます。 もし↑の原因だったら技術内容でなくケアレスミスで つきあわせてしまって申し訳ないです。 また後でお礼欄より連絡させていただきます。

その他の回答 (1)

noname#39970
noname#39970
回答No.1

name名ではなく elements[x] での参照を試みる http://www.tohoho-web.com/js/form.htm

Claudia
質問者

補足

深夜にご回答本当に有難うございます。 document.frm1.elements[0].value = "hoge"; や alert(document.frm1.element.length); 等 試してみましたが 【document.frm1.elementsはNullまたは・・・】 【document.frm1.elementはNullまたは・・・】 とやはりエラーになってしまいました。。

関連するQ&A

  • リンクタグについて

    教えてください。 <a>タグからFormを動かしたため下記のような記述を致しました。 この記述では、IE7、Firefoxでは動作するのですが、IE6では動作しません。IE6で動作させるにはどのような記述をすればよいのでしょうか? <a href="javascript:void(0)" onClick="document.frm.submit();">クリック</a> <form method="post" action="#" name="frm"> <input type="text" name="aaa" /> </from>

  • 「nullまたはオブジェクトではありません」というエラーが出ます。

    こんにちは、IE7、VISTAで試しています。 エラーもなく動いたのですが、 sClientXとsClientYの値をフォームメールでデータ送信したくて clientX=<input type="text" id=sClientX><br> clientY=<input type="text" id=sClientY><br> という部分を<form>内に入れると 「sClientXはnullまたはオブジェクトではありません」 というエラーが出ます。 エラーの原因はなんでしょうか? <HTML> <HEAD> <SCRIPT language="JavaScript"> <!-- var sample; var sClientX; var sClientY; var target; var isDrag=0; function document_onmousedown(){ isDrag=1; target=event.srcElement;} function document_onmousemove(){ if( isDrag ){ target.style.top=event.clientY-8; target.style.left=event.clientX-8;} } function document_onmouseup(){ isDrag=0; sClientX.value = document.getElementById('sample').style.left; sClientY.value = document.getElementById('sample').style.top; } document.onmouseup = fOnmousemove; function fOnmousemove() { } //--> </SCRIPT> </HEAD> <BODY onmousemove="document_onmousemove()" onmousedown= "document_onmousedown()" onmouseup="document_onmouseup()"> <DIV style="position:absolute" id=sample> このオブジェクトが移動します </DIV> <DIV id=text1 style="position:absolute;font-size:24px; cursor:hand"> </DIV> <form> clientX=<input type="text" id=sClientX><br> clientY=<input type="text" id=sClientY><br> </form> </BODY> </HTML>

  • javascriptの入力制限keycode除く

    はじめまして javascript初心者です テキストエリアに数字のみ入力できるようにしたいと思い 以下のとおりソースを記述しました function numCheck(){ var num = document.frm.txt.value; var cnum = num.replace(/[^0-9]/,""); num = cnum; document.frm.txt.value = num; <form name = "frm"> <input type="text" onkeypress="numCheck()" value="txt"> </form> キーコードによる入力制限は考えません あと何が足りないでしょうか? よろしくご教授くださいm(__)m

  • javaScript Nullまたはオブジェクトではありません エラー

    javaScriptは詳しくなく、サンプルプログラムを 参考にさせていただきながらテストをしています。 現在javaScriptで、タブ切り替えで表示内容を変更し、 表示されたフォームに、data.textの内容を表示するという テストをしています。 [コード] <html> <head> <meta http-equiv="content-type" content="text/html;charset=shift_jis"> <title></title> <script type="text/javascript"><!-- function loadTextFile() { httpObj = new ActiveXObject("Microsoft.XMLHTTP"); httpObj.onreadystatechange = statusCheck; httpObj.open("GET","data.txt",true); httpObj.send(null); } function statusCheck() { if ((httpObj.readyState == 4) && (httpObj.status == 200)) { displayData(); } } function displayData() { document.ajaxForm.result.value = httpObj.responseText; } // --></script> </head> <body> 省略(タブの切り替え設定) <div style="display:none" id="NAME11"> test1 </div> <div style="display:none" id="NAME22"> <form name="ajaxForm"> <input name="button" type="button" onClick="loadTextFile()" value="読み込み"> <textarea name="result" cols="40" rows="5"></textarea> </form> </div> <div style="display:none" id="NAME33"> test3 </div> </body> </html> ------------------------ 上記を実行すると "document.ajaxForm.resultは Nullまたはオブジェクトではありません" というエラーになってしまいます。 よろしくお願いします。

  • NULLまたはオブジェクトではありませんのエラーについて

    いつも大変勉強させていただいています。初心者です。 さて、現在自動計算を作成中ですが、 現在、オプションメニューで計算させる事には成功したのですが、出来ればラジオボタンで選択したものを計算できるようにと考えて色々試したのですが、上手く設定が出来ません。 皆さんのお知恵を拝借できないでしょうか? 宜しくお願いいたします <<外部リンクファイルです>> function KeiCalc(KC) { //オーダー見積計算式 function KeiCalc(KC) { var item1,no1; //表生地 item1 = document.Calc.X1.options[document.Calc.X1.selectedIndex].value; if(item1 == 1){Z1 = 8000} if(item1 == 2){Z1 = 10000} document.Calc.Z1.value =Z1; no1 = item1; //裏生地 item2 = document.Calc.X2.options[document.Calc.X2.selectedIndex].value; if(item2 == 1){Z2 = 8000} if(item2 == 2){Z2 = 10000} document.Calc.Z2.value =Z2; no2 = item2; (省略) //合計計算 document.Calc.PRC.value = Math.round((eval(document.Calc.Z1.value)+eval(document.Calc.Z2.value)+(eval(document.Calc.Z3.value)*eval(Z6))+eval(document.Calc.Z4.value))*eval(Z5)); (省略) } ホームページのフォームの内容 【この場合は動作するのですが、ラジオボタンに変更すると動作しません】 <SELECT name="X1" onchange="KeiCalc(this.form)"> <OPTION value="1">ノヴェル・ピンク</OPTION> <OPTION value="2">ノヴェル・ブル</OPTION></SELECT> 途中のフォームの内容 <INPUT type="radio" name="X1" value="1">ノヴェル <INPUT type="radio" name="X1" value="2">ツインベリー これで動作させると以下のようなエラーが出てしまいます document.Calc.X1.optionsはNULLまたはオブジェクトではありません・・・と 宜しくお願いいたします

  • できる人がいたらお願いします。

    大切なところだけ下記に書き込みました。 今の所ここまでできていて後少しと言う所だと思うのですが。下記の※の部分が邪魔をしてどうしてもframe1.htmlのボタンが無効化してしまいます。 frame2.htmlの※の所を抜かせばいいじゃないかと思うのですが、frame2.htmlは加工できません。 なので、javaでもperlでもなんでもいいので。 frame2.htmlだけ変えないでtextareaに文章を入れたいです。 ヨロシクお願いします。 --------index.html------- <!DOCUMENT HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN""http://www.w3.org/TR/html4/loose.dtd"> <HTML> <head> <title>frames1.0</title> </head> <frameset cols="50%,50%"> <frame src="frame1.html" name="frame1"> <frame src="frame2.html" name="frame2"> </frameset> </html> --------frame1.html------- <HTML> <body> <form> <input type="button" value="送信" onclick="window.parent.frame2.document.getElementById('txt').value='文章1';window.parent.frame2.document.getElementById('txt1').value='文章2';"> </form> </body> </html> --------frame2.html------- <html> <body> <input name='txt' type='hidden' value=''> ※ <input name='txt1' type='hidden' value=''> ※ <center> 文章<BR> <textarea rows=2 cols=38 name=txt></textarea><BR> 文章<BR> <textarea rows=2 cols=38 name=txt1></textarea><BR> </center> <body> <html>

  • Javascript IEで「識別子がありません」とエラーが出てしまいます。

    ページの読み込みが完了した段階でsubmit()して、 formの内容をactionで指定した先にPOSTしたいのですが、IE6で エラー:識別子がありません コード:0 と出てしまい動作しません。 以下がそのソースです。 --------------- <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> </head> <body onload="document.export.submit()"> <form action="list.php" method="POST" name="export"> <input type="hidden" name="data[0][text]" value="テキスト"> <input type="hidden" name="mode[export]" value="" /> <input type="submit" name="submitButton" value="エクスポート"/> </form> </body> </html> --------------- なお、Firefox2.0では正常に動作しています。 <body onload="document.form['export'].submit()"> などと、いろいろと弄り回してはみたのですが、 どつぼにハマるばかりだったので、解る方ご教授下さいませ…。

  • そのオブジェクトが存在しているかどうか

    p.htmを呼び出すと document.form0.sabmit が存在しなくてエラーになります もしPHPでhtml生成していてそのhtml内で存在しないオブジェクトを使って何かをさせようとするとエラーになります document.form0.sabmitが存在するかどうかを判断して 存在しているれば document.form0.sabmit.focus() をするような記述はどうするのでしょうか? このサイトのPHPも同じようなエラーを発生しているようです p.htm: --------------------------------- <html> <head> <title>forward</title> <script type="text/javascript"> <!-- function FormFocus() { // document.form0.submit.focus(); document.form0.sabmit.focus(); } // --> </script> </head> <body onload="FormFocus()"> <form name="form0" method="post" action="q.htm"> <input type="submit" name="submit" value="push"/> </form> </html> --------------------------------- q.htm: --------------------------------- <html> <head> <title>backward</title> </head> <body> <form name="form0" method="post" action="p.htm"> <input type="submit" name="submit" value="push"/> </form> </html> ---------------------------------

  • NULLまたはオブジェクトではありません エラー

    BP・ヤフー・Goo・他サイトで検索し、色々と試して見ましたが、解決できなかったため、どなたかお力を貸していただけるとありがたいです。 社内Webサイトを開く際、開けるページもありますが、 いくつかのリンクが開けません。社内でも他の方は開けますが、自分だけ開くことができません。 自分以外の人は問題なく使えていても、Webサイト側の問題ということがあるのでしょうか。 エラーメッセージは エラー:’document.all.save msg’NULLまたはオブジェクトではありません 他の検索サイトなどで調べた方法は全て試してみました。 OSは Windows XP です。 ・IE8を使う ・Firefox最新版を使う ・キャッシュ・クッキー・テンポラリーファイルの削除 ・JAVA APPLET の選択・非選択 解決方法または、原因と思われるようなことがありましたら教えてください。 よろしくお願い致します。

  • VBSのIEオブジェクトでフォームデータ送信する

    ■質問 通常IEオブジェクトを使ってフォームにセットされたデータを サブミットするには、 IE.Document.forms("").elements("").value = "" IE.Document.forms("").submit() と行うと思うのですが。 例えば下記のようなフォームを送信する際、 フォームのある"http://test.com/login_form" ページにわざわざ移動せず 直接"http://test.com/action"の "hidden"のエリアに対してデータを送信 する方法を教えて頂けませんでしょうか? また、Form1に複数のエレメントが存在する場合 全てのエレメントの値を送らないと正しく処理 できないでしょうか? ■"http://test.com/login_form" のHTML <form name="Form1" method="post" action="/action"> <input type="hidden" name="ID" value="1234"> <input type="submit"> </form>