• ベストアンサー
  • 困ってます

【javascript】firefoxでの、alertについて

はじめてOK Waveで質問します。 よろしくお願いします。 javascriptについての質問です。 form内の複数のradioの項目の組み合わせに応じて、if文でlocation.hrefでページ遷移するというjsを書きました。 IEでは動作しましたが、firefoxで動作しませんでした。 firefoxで動かない原因が分からず、自分なりにalertを使いながら原因を探っていたところ、 if文の次にalertを書いたところ、firefoxでも動作することができました。 ------------------------------ function pageshift() { var one, two; for (i = 0; i < 2; i++) { if(document.form.one[i].checked){ one = document.form.one[i].value; } } for (i = 0; i < 2; i++) { if(document.form.two[i].checked){ two = document.form.two[i].value; } } if(one == 'a' && two == 'a') { window.location.href = 'aa.html';} } else if(one == 'a' && two == 'b') { window.location.href = 'ab.html';} } alert('test'); } ------------------------------ (最後のalert('test');を書いたらそれまでfirefoxでは動作しなかったものが、動作した、ということです。IEではalert('test');がなくても目的通りに動作しています。) しかしながら、alertでメッセージが出てきてしまうのは避けたいと考えています。 alertを書いてページ遷移のfunctionが動作(正常に処理?)したとするならば、alertと同じような処理状態でなおかつメッセージを表示しないような状態に持っていければ、目的どおりになるのではないかと考えています。 どのように記述していけばいいのでしょうか・・・? よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数1579
  • ありがとう数5

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

  • ベストアンサー
  • 回答No.2
  • Yohjira
  • ベストアンサー率66% (14/21)

適当に、こんなものを作ってみました。 <html> <head> <script type="text/javascript"> <!-- function pageshift() { var one, two; for (i = 0; i < 2; i++) { if(document.form.one[i].checked){ one = document.form.one[i].value; } } for (i = 0; i < 2; i++) { if(document.form.two[i].checked){ two = document.form.two[i].value; } } if(one == 'a' && two == 'a') { window.location.href = 'aa.html'; } else if(one == 'a' && two == 'b') { window.location.href = 'ab.html'; } } --> </script> </head> <body> <form name="form"> one<br> <input type="radio" name="one" value="a">a<br> <input type="radio" name="one" value="b">b<br> <br> two<br> <input type="radio" name="two" value="a">a<br> <input type="radio" name="two" value="b">b<br> <br> <input type="button" value="click" onclick="pageshift();"> </form> </body> </html> pageshift()については、window.location・・・の部分の}が多かったものは消去しています。 (これは単なるコピーミスだと思いますが) 上のソースはFirefox3では動くようです。 実際に使っているpageshift()は恐らく、質問で書かれたものとは違うと思います。 alert()がないと動かないのは、他に原因があるのではないでしょうか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

参考ソース作成、ありがとうございます。 参考ソースがfirefoxで動作しているのを確認し、なぜ自分のソースでは動作しないのか???と考えています。 > 実際に使っているpageshift()は恐らく、質問で書かれたものとは違うと思います。 確かにそのとおりです。 コピーミスはありましたが(すみません)、基本的なロジックの構造は同じです。 > alert()がないと動かないのは、他に原因があるのではないでしょうか。 そうかもしれません。。 html側で読み込んでいるjsはひとつだけで、そのjsの中にはpageshift()のみ記述してあるだけなのですが。。 作成していただいた参考ソースと自分のソースを見比べながら、考えてみようと思います。

関連するQ&A

  • クロームでjavascriptが動作しない。。。

    いつも皆様の記事を参考にさせていただいておりますsasaloと申します。 早速ですが、件名のことでご質問させていただきたくどなたか詳しい方がおられましたら ご教授いただけないでしょうか? どうぞよろしくお願いします。 現在、チェックボックスにチェックを入れたらファイルがダウンロードできるというものをjavascriptで 作りましたが、IE、FIREFOXは問題なく動作するのですが、クロームのみ動作しません。 htmlとjavascriptのコードは下記になります。 //html <form name="dl_form"> <input type="checkbox" name="dl_check" value="同意する" id="dl1" /> <label for="dl1">同意する</label> <p><a href="javascript:;" onclick="download()" class="dl">ダウンロード</a></p> </form> //javascript function download (){ flag = document.dl_form.dl_check.checked; if(flag){ window.open("registration.pdf"); } else{ alert("チェックされていません。チェックしてからダウンロードをお願いします。"); } } お手数で済みませんがどうぞよろしくお願いいたします。 from sasalo

  • validateForm firefoxでalertが表示されません

    java scriptについて質問です。 ホームページ内のプルダウンメニューで、項目が選択されていない状態で「submit」ボタンが押された場合、「~を選択してください」というメッセージを表示させたいと思います。 そこで以下のようなfunction validateFormを書いたのですが、alertがIEでは表示されるのにfirefoxでは表示されません。 function validateForm() { if (document.form1.Prop1.options.value == 'Error') { alert('Please select aaa.') document.form1.Prop1.focus() return false } if (document.form1.Prop2.options.value == 'Error') { alert('Please select bbb.') document.form1.Prop2.focus() return false } if (document.form1.Prop3.options.value == 'Error') { alert('Please select ccc.') document.form1.Prop3.focus() return false } if (document.form1.Prop4.options.value == 'Error') { alert('Please select ddd.') document.form1.Prop4.focus() return false } if (document.form1.Prop5.options.value == 'Error') { alert('Please select eee.') document.form1.Prop5.focus() return false } } firefoxでもalertを表示させるには、どのようにすればいいでしょうか? 教えてくださいませ。よろしくお願いします。

  • javascriptで、下記のコードをFireFoxで実行した際にd(

    javascriptで、下記のコードをFireFoxで実行した際にd("input")の行でエラーが出てしまいます。 <script language="javascript"> var a=window.alert; alert(a); a("test"); var d=document.createElement; alert(d); d("input"); </script> なぜ、window.alert関数はa変数に代入して実行できるのに、document.createElementはd変数に代入しても実行できないのでしょうか。 d変数をalertすると[native code]とアラートされるので、関数を d に代入出来てはいそうなのですが。 ちなみにFireFox3.5.11で発生した現象です。

その他の回答 (2)

  • 回答No.3
  • yambejp
  • ベストアンサー率51% (3827/7415)

もしformに「form」という名前をつけているならやめるべきです。 formに名前はつけてはいけないことになっていますし、ましてや 予約語を使うのはトラブルのもとです。 こんな感じでオブジェクトでわたしてやってはどうでしょうか? <script> function pageshift(f) { var one, two; for(var i=0;i<f.length;i++){ if(f[i].type=="radio" && f[i].checked){ if(f[i].name=="one") one = f[i].value; if(f[i].name=="two") two = f[i].value; } } if(one == 'a' && two == 'a') location.href = 'aa.html'; if(one == 'a' && two == 'b') location.href = 'ab.html'; } </script> <form> one<br> <input type="radio" name="one" value="a">a<br> <input type="radio" name="one" value="b">b<br> <br> two<br> <input type="radio" name="two" value="a">a<br> <input type="radio" name="two" value="b">b<br> <br> <input type="button" value="click" onclick="pageshift(this.form);"> </form>

共感・感謝の気持ちを伝えよう!

質問者からのお礼

参考ソース作成、ありがとうございます。 こちらのソース及びNo.2の参考ソースと、自分で書いたソースを睨めっこしていたところ、問題が解決いたしました。 原因はjsではなくhtmlだったようです。 form内のsubmitするボタンを <button onmouseup="pageshift();">検索</button> としていたのですが、 お二人に作成して頂きましたソースでは共通して <input type="button"> を使用していらしたので、そのように修正したところ、firefoxでも目的どおりに動作することを確認できました。 ご回答頂きました皆様に感謝です。 ありがとうございました。

  • 回答No.1

タイマーを使ってはどうでしょうか?↓こんな感じ。 if(one == 'a' && two == 'a') { setTimeout(function(){ window.location.href = 'aa.html'; },1) } else if(one == 'a' && two == 'b') { setTimeout(function(){ window.location.href = 'ab.html'; },1) }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 試してみたのですが、やはりfirefoxでは動作しませんでした。。

関連するQ&A

  • javascriptのパスワードっぽいもの

    現在入力したキーワードが合っていれば、リンクに飛ぶというページが作りたくて 苦闘しているのですが、「オブジェクトを指定してください。」というエラーが出て 上手くいきません。 考えてみても心当たりがないのですが、何がいけないのでしょうか? 以下にページのソースを記述いたしましたので、何かお気づきな点がございましたら、 ご教授いただければ幸いです。 よろしくお願いいたします。 <html> <head> <title>判定</title> <spript language = "JavaSpript"> <!-- function pass(moji) { if(moji==777){ location.href="link.html"; }else{ window.alert("間違ってます"); } } //--> </spript> </head> <body> <form name="form"> <input type="text" size="5" name="txt"> <input type="button" value="クリック" onclick="pass(document.form.txt.value)"> </form> </body> </html>

  • チェックボックスの連動でJavaScriptの記述を短くしたい。

    【あ】、【い】という項目があり、それぞれの項目内にA、Bというチェック項目があります。 【あ】項目のAにチェックを入れると【い】のAにもチェックが入るように作りました。 以下のソースでもなんとか動くのですが、【あ】、【い】という項目が増える事とA、Bというチェック項目が増えることが判り、JavaScriptのソースを少しでも短くしたいのですが、なにか好い方法がございましたらお教え頂ければ幸です。 /************参考ソースです*****************/ <html> <head> <title>無題ドキュメント</title> <script> function check_a(){ if(document.form.a.checked==true) { document.form.a.checked=true; document.form.b.checked=false; document.form.aa.checked=true; document.form.bb.checked=false; } } function check_b(){ if(document.form.b.checked==true) { document.form.a.checked=false; document.form.b.checked=true; document.form.aa.checked=false; document.form.bb.checked=true; } } function check_aa(){ if(document.form.aa.checked==true) { document.form.a.checked=true; document.form.b.checked=false; document.form.aa.checked=true; document.form.bb.checked=false; } } function check_bb(){ if(document.form.bb.checked==true) { document.form.a.checked=false; document.form.b.checked=true; document.form.aa.checked=false; document.form.bb.checked=true; } } </script> </head> <body> <form name="form"> 項目【あ】 <input type="checkbox" name="a" onclick="check_a()"> A<BR> <input type="checkbox" name="b" onclick="check_b()"> B<BR> <br /> 項目【い】 <input type="checkbox" name="aa" onclick="check_aa()"> A<BR> <input type="checkbox" name="bb" onclick="check_bb()"> B<BR> <br /> </form> </body> </html> /*************************/ 何卒、宜しくお願い申上げます。m(_ _)m

  • javascriptで質問です。

    oをaとbの値にするにはどうすればいいのでしょうか。 よろしくお願い致します。 <script type="text/javascript"> <!-- function test(n,m){ if(m=="1")o="a"; if(m=="2")o="b"; parent.o.document.open(); parent.o.document.write(m); parent.o.document.close(); } //--> </script> <A HREF="javascript:test(1,1)">まりお</A> <A HREF="javascript:test(1,2)">くっぱ</A>

  • JavaScript 初心者です。

    急遽ホームページ作成をやることになり大変困っています。 何もかも初心者で全くわからない状態ですのでよろしくお願い致します。 お客様情報入力で送信ボタンで押すとメールで情報が届く様にしています。 送信ボタンを押したときに、入力チェックをかけているのですが、複数のテキストボックス(郵便番号を入力するテキストボックス)のチェック方法が分かりません。 郵便番号は、3桁-4桁で入力して頂く様にしています。 HTML(郵便番号のみです)・・・ <INPUT maxlength="3" size="3" type="text" name="iyubin" value="" style="ime-mode:disabled;" id="01">-<INPUT type="hidden" name="iyubin" value="-"><INPUT maxlength="4" size="4" type="text" name="zyubin" value="" style="ime-mode:disabled;" id="02"> JavaScriptでの入力チェック(省略をしていますが、正常に動作しているヵ所です)・・・ //お客様情報 function check(){ var flag = 0; // お名前 if ((flag==0) && (document.form.gName1.value == "")){ flag = 1; } if(flag){ window.alert('【お名前】を入力して下さい。'); // 入力されていない場合は警告ダイアログを表示 return false; // 送信を中止 } // ふりがな if ((flag==0) && (document.form.hName2.value == "")){ flag = 1; } if(flag){ window.alert('【ふりかな】を入力して下さい。'); // 入力されていない場合は警告ダイアログを表示 return false; // 送信を中止 } // 性別 if((flag==0) && (document.form.iSeibetsu.length)) { // 選択肢が複数ある場合 flag = 1; var i; for(i = 0; i < document.form.iSeibetsu.length; i ++){ if(document.form.iSeibetsu[i].checked){ flag = 0; break; } } } else{ // 選択肢が1つだけの場合 if((flag==0) && (!document.form.iSeibetsu.checked)){ flag = 1; } } if(flag){ window.alert('【性別】を選択して下さい。'); // 選択されていない場合は警告ダイアログを表示 return false; // 送信を中止 } //このヵ所に郵便番号の入力チェックを入れたいです。 すみませんが、よろしくお願い致します。

  • formについてFirefoxで動作させたい

    IEとGoogle Chromeでは動作が正常に確認できました。 Firefoxでも正常に動作するようにしたいのですが、何処を直せば良いのでしょうか? クリックしてもボタンが動いてないようなのですが・・・・。 すみません、どなた様かご存知でしたら、どうぞよろしくお願い致します。 <script type="text/javascript"> function PassChack(){ var passWord = passF.pass.value; if(passWord ==""){ alert("パスワードが未入力です"); return false; }else if(passWord == "aaa"){ location.href = "aaa.html"; }else{ alert("パスワードが間違っています"); } } </script> <form method="post" id="passF">   <input type="text" name="pass" id="pass" size="30" value="" /><input type="button" value=" 実行 " onclick="PassChack();return false;" /> </form>

  • 以下のJavaScriptが、どんな動作をしているか教えて頂けないでし

    以下のJavaScriptが、どんな動作をしているか教えて頂けないでしょうか? var previousOnload = window.onload; window.onload = function() { if (previousOnload) { previousOnload(); } //radiobuttonIdは、radio buttonのIdです。 document.getElementById('radiobuttonId').checked = true; } if文の中でpreviousOnloadを呼んでるので、自分自身を呼んでると思うのですが、 特にwindow.onloadのfundtion()は何もreturnしてないので、if文に入ってるのが意味がわからなくて。。 どうぞ宜しくお願い致します。

  • JavaScript のリンクから、CGIを動かす方法

    アンカーをクリックして、画面を遷移させずにウインドウを開き、 cgi を動かすにはどうしたらいいでしょうか? 現在、 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ <A HREF="www.htm" onClick="return openWin('http:://test/test.htm')">[開く]</A>   ・   ・   ・ var w = window; function openWin(url) {  w = open(url, "_blank");  return(false); } ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ と書き、[開く] アンカーをクリックすれば、別窓が開きますが、 この時同時に test.cgi を動作させたいのです。(test.cgi に遷移させない) よろしくおねがいたします。

    • ベストアンサー
    • Perl
  • javascriptにフェードインを追加したい。

    下記のjavascriptに、フェードイン効果を追加するにはどうすればいいでしょうか? 現在は、クリックで、テキストが切り替わる仕様になっているんですが、これにフェードイン、フェードアウトの機能を付け加えたいです。 また、切り替わった際に下記のようにCSSの.actveをclass=""に追加させたいのですが、 どうすれば可能でしょうか? 目的は、アクティブになったボタンの背景を変更したい為です。 <div class="button actve"><a href="#" onclick="checkd1();return ChDsp2('text1','textALL');">ボタン1</a></div> 【javascript】 function ChDsp2(strShow,classHidden){ var tags=document.getElementsByTagName("div"); for(var i=0;i<tags.length;i++){ if(tags[i].className.match('textALL')){ tags[i].className=tags[i].className.replace(/hide/,"").replace(/^\s+|\s+$/,""); if(tags[i]!=document.getElementById(strShow)) tags[i].className+=' hide'; } } return false; } function checkd1(){ document.FORM.CHECK1.checked=true document.FORM.CHECK2.checked=false document.FORM.CHECK3.checked=false } function checkd2(){ document.FORM.CHECK1.checked=false document.FORM.CHECK2.checked=true document.FORM.CHECK3.checked=false } function checkd3(){ document.FORM.CHECK1.checked=false document.FORM.CHECK2.checked=false document.FORM.CHECK3.checked=true } function change(c) { var f = c.checked, btn = c.form.elements['btn1']; btn.disabled = f?false:true; f = f?'sozai/button_2.jpg':'sozai/button_1.jpg'; btn.style.backgroundImage = 'url(' + f + ')'; } 【HTML】 <div class="button"><a href="#" onclick="checkd1();return ChDsp2('text1','textALL');">ボタン1</a></div> <div class="button"><a href="#" onclick="checkd2();return ChDsp2('text2','textALL');">ボタン2</a></div> <div class="button"><a href="#" onclick="checkd3();return ChDsp2('text3','textALL');">ボタン3</a></div> <div class="clear">&nbsp;</div> <div class="area"> <form name="FORM"> <div id="text1" class="textALL"> その1、ここは最初に表示されています。 </div> <div id="text2" class="textALL hide"> その2、ここはボタン2をクリックで表示されます。 </div> <div id="text3" class="textALL hide"> その2、ここはボタン3をクリックで表示されます。 </div> </form> </div> 上記は、以前頂いたプログラムをわかる範囲で改造したものなのですが、 限界を感じまして、どなたか教えて頂けたら助かります。 宜しくお願いします。

  • 同意チェックボックスはひとつ、遷移先は複数にしたい

    探して見つけた↓をWordPressで使わせていただきたいのですが、 WordPressの投稿ページで動きません・・・。 <html> <head> <script type="text/javascript"> function goServlet(url){ if (!document.chbox.cBox.checked){ // 同意してない window.alert("同意して"); }else{ // 同意してる document.location = url; } } </script> </head> <body> <p>上記、「システム利用規約」に同意します。 <form name="chbox"> <input type="checkbox" name="cBox" > </form> </p> <a href="javascript:goServlet('http://google.com')" >トップページへはこちら</a> <a href="javascript:goServlet('http://yahoo.jp')" >会員ページへはこちら</a> </body> </html> 「"javascript:goServlet('http://google.com')"」 この部分がダメなのだと思うのですが、他の方法を教えていただけないでしょうか・・・。 できましたらformのsubmitで・・・。 (すみませんド素人です) よろしくお願いします。

  • javascriptの動作について

    こんばんは。 直接アドレス指定などしてきたものについては、 トップページへ飛ばすことをしようと思ったのですが、 以下の記述だと、IE8では動作しましたが、GoogleCrome(11.0.696.77)、firefox(3.6.0)、safari では動作しませんでした。(location.hrefがダメなんでしょうか?) 解決策・回避策などあれば教えてください。 よろしくお願いします。 <script language="JavaScript" type="text/JavaScript"> <!-- var url; url = document.referrer; if(url != 'http://xxxxxxxxx'/){ location.href('http://xxxxxxxxxxxxx'); } // --> </script>