sukceson’s diary

日々つまずいたこと

ipadのviewportって厄介?

viewportって、画面幅表示、最大拡大率2倍にしてるけど、

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes">

 

これだとipadでうまくいかなかった!

縦表示から横表示に傾けると、コンテンツが画面をはみ出てしまった。

initial-scale=1.0をとるとうまくいくけど、

それだとスマホで、画面を横に向けた時の、文字サイズが大きすぎて、

すごく気になる!

 

ということで、ipadのときだけ、initial-scaleの指定を取ることにしたけど・・・・

    var ua = navigator.userAgent;
    var tabletFlg = (ua.indexOf('Android') > 0 && ua.indexOf('Mobile') == -1) || ua.indexOf('iPad') > 0;

    if(tabletFlg){
        $('head').children('meta[name="viewport"]').attr('content','width=device-width, maximum-scale=2.0, user-scalable=yes');
    }

 

 

PC表示をそのままスマホでも表示させたいときにも同じだった。

initial-scale=1.0入れてると、はみ出て一部しか見れない状態になっちゃいました。

 

オブジェクトのプロパティにjquery要素入れたのに、なぜか使えない。。

なぜかエラーになる。。ready関数の中にも入れてるのにどうして・・><

 

    var fxP = {
        scrollPosition:$(window).scrollTop(),
        box                        : $('#fixedPrice'),
        fixedTop    : fxP.box.offset()
    };

 

TypeError: fxP is undefined

オブジェクトのプロパティの数取得も、値の変更も、for in 文を使えば自由にできた、

今まで繰り返し文といえば、forだけしか使ってなかったけど、

for in文が便利すぎて感動><

 

    var month = {
                tab01 : myMonth,
                tab02 : myMonth+1,
                tab03 : myMonth+2
            }

    for(var j in month){
        monthCount++;
        if(month[j]>12){
            month[j]= month[j]-12;
        }
    }

 

monthCountでオブジェクトmonthのプロパティの数がわかるし、

j(おそらくなんでもよさげ)でプロパティ名取ってこれた。

 

 

jQuery 要素や文字列が存在するかのチェック方法をおさらい

if($("#target").size()>0){
  //id「target」が存在している
}

if(_str.indexOf("sample")!=-1){
  //sampleの文字が含まれている場合
}

 

jqueryメソッドがあるかのチェックもしたいので追記するか。

連番にした変数をforで回して使いたい

何がしたいかうまく説明できないことだけど、つまづいたのでメモ。

オブジェクトを文字列に変換したいというか、変数を文字列で指定したいというか・・・。

 

下のだと、('time0'+i)のところが文字列になってしまって、forで回してスマートにしようっていうのに失敗

        var time01 = '11:00~',
              time02 = '13:00~',
              time03 = '15:00~',
              time04 = '午前',
              time05 = '午後';

        for(var i=1;i<=n;i++){
              t = 'time0'+ i;
              td.append('<p>'+('time0'+i)+ '</p>');
       }

 

それで、

オブジェクトtextに、触りたいものをプロパティとして入れる。

text[文字列]だとオブジェクトの中身を文字列でアクセスできた。

        var text = {
            time01 : '11:00~',
            time02 : '13:00~',
            time03 : '15:00~',
            time04 : '午前',
            time05 : '午後'
        }

        for(var i=1;i<=n;i++){
            t = 'time0'+ i;
            $td.append('<p>'+text['time0'+i]'</p>');
        }

 

このへんのページ参考になるかと思ったけど難解。。

JSONらしき文字列をオブジェクトに変換するJavaScript - Takazudo hamalog