質問: setInterval(function() { (indexSlider).fadeOut("slow").removeClass(SMsize[index]); index=(index+1)%4; (indexSlider).fadeIn("slow").addClass(SMsize[index]); }, 5000); } } af.addListener(testes); ///下記のコードで初期値で入れていました。コードを変えたことでこれも問題あるとわかるのですが解決ができていないためそのまま載せます。 if (!af.matches){ indexSlider.addClass(BGsize[0]); } else if(af.matches){ indexSlider.addClass(SMsize[0]); } ///ここまで ``` MediaQueryListを使ってダメだった点: 1.767サイズより大きいサイズだった場合if(e.matches)=trueが反応しない。動的に小さくなった時にtrueの処理が始まる。 2.767サイズより小さい場合elseの処理が始まらない。動的に大きくなりまた小さくなると処理が始まるが,if trueとelseの両方の処理が繰り返される。 実現したいことウィンドウを開いたとき画面サイズを所得してif文(繰り返させるtimer)を起動させる。 サイズが変わった時、処理を終了(繰り返しのtimerを停止)させてif文を実行する。(現状だと両方実行してしまうため)
回答: > > hogeの値を受け渡しできてないようです。 > > > はい、この`if`がある箇所はイベントを登録した直後(`resize`イベントが起きないうち)に実行されるので、`hoge`に値は入りません。 必要な`処理`は、`resize`のイベントハンドラの中で行うのがいちばん書きやすいかと思います。