はじめて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と同じような処理状態でなおかつメッセージを表示しないような状態に持っていければ、目的どおりになるのではないかと考えています。
どのように記述していけばいいのでしょうか・・・?
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
適当に、こんなものを作ってみました。
<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()のみ記述してあるだけなのですが。。
作成していただいた参考ソースと自分のソースを見比べながら、考えてみようと思います。
No.3
- 回答日時:
もし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)
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- 英語 下のサイトページと同じ質問なのですが、1人目と2人目の英語圏の回答者さんが違う答えを出しているような 4 2023/05/31 06:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アンダーバーのname値は取得で...
-
radio選択をクッキーに保存させ...
-
データベースの値を判断してラ...
-
Jvasvriptのlengthで個数が取得...
-
ラジオボタンの分岐方法に関して
-
フォームPOST後「戻る」時のチ...
-
javascript作成してます。ラジ...
-
Javascriptを使って動的にラジ...
-
ラジオボタンで選択した項目の...
-
ラジオボタンのValueを受け取り...
-
ラジオボタンでチェックした項...
-
チェックボックスのON/OFFに連...
-
ラジオボタンのチェックが外れ...
-
Form内のselectを連動させるに...
-
return trueとreturn falseの用...
-
正規表現で複数マッチ条件で悩...
-
画面表示とともに、テーブルの...
-
【UWSC】HTML内のある部分を抽...
-
3桁区切りのカンマをつけたい...
-
iframe内のformをサブミットす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンのチェックが外れ...
-
javascript作成してます。ラジ...
-
ラジオボタンにタブインデック...
-
Jvasvriptのlengthで個数が取得...
-
ホームページ作成について。
-
データベースの値を判断してラ...
-
フォームPOST後「戻る」時のチ...
-
ラジオボタンでdisabledとchecked
-
Form内のselectを連動させるに...
-
チェックされたラジオボタンに...
-
アンダーバーのname値は取得で...
-
ラジオボタンのリセット方法
-
jQueryで複数のラジオボタンを処理
-
ラジオボタンの分岐方法に関して
-
javascriptによる動的なリンク...
-
radio選択をクッキーに保存させ...
-
ラジオボタンでチェックした項...
-
jQuery 変数の使い方について
-
チェックボックスとテキストボ...
-
チェックボックスのON/OFFに連...
おすすめ情報