質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

9540閲覧

IEとChromeでwindow.onloadの挙動の違いについて

kchan

総合スコア10

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/07/20 09:36

編集2018/07/20 10:26

JavaScript内でwindow.onload = function() {}で初期表示時に他の値によって表示非表示にしたいです。

JavaScript

1window.onload = function() { 2 if ($("input[name='xxx']:checked").val() == "") { 3 document.getElementById('yyy').style.display = "none"; 4 } else { 5 document.getElementById('yyy').style.display = "block"; 6 } 7}

のように実装で、
Chromeだと期待した通りに表示非表示の制御が出来ています。
IEだとなぜかxxx.val()がundefinedになり期待通りにはいきません。

調べたところIEの仕様だという情報もありましたが、
IEでも動くような修正方法が見つかっていません。

ご教授頂けると幸いです。

一部抜粋(抜粋しすぎていれば教えてください。)

HTML

1<div style="display:block"> 2 <div><p>条件</p></div> 3 <div> 4 <ul> 5 <li> 6 <input id="xxx" type="radio" name="A" /> 7 <input id="xxx" type="radio" name="B" /> 8 </li> 9 </ul> 10 </div> 11</div> 12<div id="yyy" style="display:block"> 13 <div><p>表示非表示させたい</p></div> 14 <div> 15 <ul> 16 <li> 17 <input type="radio" name="C" /> 18 <input type="radio" name="D" /> 19 </li> 20 </ul> 21 </div> 22</div>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/07/20 09:38

xxx、styleの定義部分も提示してください。
kchan

2018/07/20 09:42

修正しました。xxxやyyy、if文内の右辺は適当に読み替えて頂ければと思います。
x_x

2018/07/25 09:00

再現しません(提示されたHTMLに name="xxx" がないので補って確認してもIEで再現しない)。どのようなことをしたいのでしょうか?
guest

回答1

0

ベストアンサー

$("input[name='xxx']:checked")

jQueryを利用していますか?
なんか普通のjavascriptと混じっててどちらかに統一したほうがよいかと。
document.querySelector("input[name='xxx']:checked").value
とか

なおjQueryを前提にするなら
xxxのチェックボックスでチェックされている状態のもののvalueが""なら
yyyを隠すというロジックでよいならこう

javascript

1$(function(){ 2 $('#yyy').toggle($("input[name='xxx']:checked").val()!=""); 3});

追記

HTML

1<div style="display:block"> 2 <div><p>条件</p></div> 3 <div> 4 <ul> 5 <li><label><input type="radio" name="xxx" value="A">A</label></li> 6 <li><label><input type="radio" name="xxx" value="B">B</label></li> 7 </li> 8 </ul> 9 </div> 10</div> 11<div id="yyy" style="display:block"> 12 <div><p>表示非表示させたい</p></div> 13 <div> 14 <ul> 15 <li><label><input type="radio" name="zzz" value="C">C</label></li> 16 <li><label><input type="radio" name="zzz" value="D">D</label></li> 17 </li> 18 </ul> 19 </div> 20</div>

調整版

javascript

1<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function(){ 4 $('input[name=xxx]').on('change',function(){ 5 $('#yyy').toggle($(this).val()=="A"); 6 }).filter(":checked").trigger('change'); 7}); 8</script> 9 10<div style="display:block"> 11 <div><p>条件</p></div> 12 <div> 13 <ul> 14 <li><label><input type="radio" name="xxx" value="A" checked>A</label></li> 15 <li><label><input type="radio" name="xxx" value="B">B</label></li> 16 </li> 17 </ul> 18 </div> 19</div> 20<div id="yyy" style="display:block"> 21 <div><p>表示非表示させたい</p></div> 22 <div> 23 <ul> 24 <li><label><input type="radio" name="zzz" value="C">C</label></li> 25 <li><label><input type="radio" name="zzz" value="D">D</label></li> 26 </li> 27 </ul> 28 </div> 29</div>

投稿2018/07/20 09:52

編集2018/07/20 11:07
yambejp

総合スコア114848

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kchan

2018/07/20 10:10

JavaScriptもjQueryも初心者レベルなので、すみません… 頂いた情報で試してみようと思います。
yambejp

2018/07/20 10:13

できればhtmlも例示して、どの処理をしたらどうしたい というような質問形式にしたほうがより的確な回答ができるかと思います
kchan

2018/07/20 10:19

IEだとundefinedになってしまうようです…
yambejp

2018/07/20 10:20

えーと、そうじゃなくてHTMLが例示されていないので 挙動が説明しづらいということです。
kchan

2018/07/20 10:27

見る前にコメントしていました。抜粋ですが追記しました。
yambejp

2018/07/20 10:47

>見る前にコメント 行き違いあり、失礼しました。 HTMLが明らかにおかしかったので追記でHTMLだけ書きました。 これに対して、Aを選んだらyyyの表示を消したいとかでよいですか? それともロード時だけ処理がしたいのでしょうか?
yambejp

2018/07/20 10:52

もしくはxxxが選択されていない場合はということなんでしょうかね?
kchan

2018/07/20 10:58

PCから離れてしまったのでスマホから失礼します。 Aを選択時に表示、Bを選択時に非表示にしたいです。 初期表示はAにしようかと思っています。 チェック切り替え時に表示非表示の切り替えは上手く出来ています。
yambejp

2018/07/20 11:08

調整版をつけておきました ロード時または任意にAを選んだときは表示、Bを選んだときは非表示です
kchan

2018/07/20 11:09

ありがとうございますm(_ _)m 戻ったら試してみます。
kchan

2018/07/23 01:20

返事遅くなりました。<script></script>の書く位置はhead内でも問題ないでしょうか?
yambejp

2018/07/23 01:39

> <script></script>の書く位置はhead内 そうですね、とくに支障がなければそうしてください また外部ファイルに吐き出してしまうほうが一般的です
kchan

2018/07/23 02:56

jsファイルに出したのですが、うまくいきませんでした。 jquery.minのバージョンは関係ありますか? 1.11.0を使用しています。
kchan

2018/07/26 07:58

調査し続けた結果、あるjsが完了する前に実行されていたため、undefinedになっていたようでした。 実装の仕方等詳しく教えて頂いたのでBAにさせていただきました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問