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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

1322閲覧

関数の呼び出し、実行を制御したい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2016/02/26 11:28

編集2016/02/26 12:13

###前提・実現したいこと
関数を画面幅に応じて追加、または削除したい。

###発生している問題・エラーメッセージ
イベントはonやoffを使えば実行を制御できますが、
例えばウィンドウサイズが640pxより大きい場合のみ
navDisplay();という関数を実行したいのですが、
下記ですと、リサイズして640px以下になったとき
リサイズ前に呼び出されているので、
navDisplay();は実行されてしまうと思われます。

###ソースコード

javascript

1//スマホとpc 関数切り替え 2$(window).on("load resize", 3function() { 4 if ($(this).width() > breakP && is_sp != false) { 5 // ウィンドウサイズが640超過かつ 6 // 現在の表示がsp用表示の場合(または初回)に呼び出される 7 navDisplay(); 8 pcNavAction()9 } 10 else if ($(this).width() < breakP && is_sp != true) { 11 // ウィンドウサイズが640以下かつ 12 // 現在の表示がpc用表示の場合(または初回)に呼び出される 13 spNavAction(); 14 } 15} 16); 17function navDisplay() { 18 $nav.attr('style', ''); 19 if($body.hasClass("is-open")) { 20 $body.removeClass("is-open"); 21 } 22} 23;

勉強不足ですみませんが、よろしくお願いいたします。

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

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

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

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

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

think49

2016/06/15 21:58

shi_ue さんの回答で解決可能に思われますが、レスを付けられない理由が何かあるのでしょうか。
退会済みユーザー

退会済みユーザー

2016/06/16 02:41

ご指摘のほどありがとうございました。 私の確認不足によるもので、大変反省しております。 今後、このようなことがないよう注意していきたいと思います。
guest

回答3

0

ベストアンサー

elseifのところがおかしいですね。
resizeイベントはresize中繰り返し出てしまうので、繰り返し出てもおかしくないようなfunctionの作りが必要です。

Javascript

1$(window).on("load resize", 2function() { 3 if ($(this).width() > breakP && is_sp != false) { 4 // ウィンドウサイズが640超過かつ 5 // 現在の表示がsp用表示の場合(または初回)に呼び出される 6 navDisplay(); 7 pcNavAction()8 } 9 //else if ($(this).width() < breakP && is_sp != true) { 10 else if ($(this).width() <= breakP && is_sp == true) { 11 // ウィンドウサイズが640以下かつ 12 // 現在の表示がpc用表示の場合(または初回)に呼び出される 13 spNavAction(); 14 } 15} 16);

投稿2016/02/27 02:58

shi_ue

総合スコア4437

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

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

退会済みユーザー

退会済みユーザー

2016/06/16 02:39

返事が大変遅くなってしまい、大変申し訳ありません。 質問内容がとても不適切であったのにも関わらず、 問題点を的確に指摘していただきありがとうございました。 関数の作り方から見直していきたいと思います。
guest

0

後から関数を追加、削除することはできません。
また、実現したい内容についての説明が不足しています。
まずは、下の3項目を整理してください。

・幅が640px以下のとき何をするのか
・幅が640pxを越えたとき何をするのか
・リサイズしたときはどう動かしたいのか

投稿2016/02/26 12:14

sonor_3rd

総合スコア114

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

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

退会済みユーザー

退会済みユーザー

2016/06/16 02:36

返事が大変遅くなってしまい、大変申し訳ありません。 質問内容がとても不適切であったことを反省しております。 今後、このようなことがないよう十分注意するように心がけてまいります。
guest

0

もし、必要でもないのにブラウザを超えてOSの値にアクセスできるスクリプトがWEBブラウザで動作するとしたら、それは恐ろしいことだとは思いませんか?

投稿2016/02/26 11:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/02/26 11:50

あれ? 質問内容が違うかな? すいません、金曜夜なのですでによっぱ…
退会済みユーザー

退会済みユーザー

2016/02/26 11:54

どうも質問内容がおかしいようです。 > 例えばウィンドウサイズが640pxのときだけ > navDisplay();という関数を実行したいのですが、 なら、 if ($(this).width() === 640) ですし、 >リサイズして640px以下になったとき は else if ($(this).width() <= 640) ですし、 なんというか、全体的に日本語がアレです。
退会済みユーザー

退会済みユーザー

2016/02/26 12:11

大変申し訳ありませんでした。 「ウィンドウサイズが640pxのときだけ」は間違いで「ウィンドウサイズが640pxより大きい場合」が正しいです。 ご指摘していただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問