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

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

ただいまの
回答率

90.61%

  • JavaScript

    15922questions

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

Javascript ページ下部にいくと新たに商品が現れる

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 321

isseidayo

score 6

初めまして、Javascriptにとても苦戦しております。
現在、色んなサイトを見てここまでJavascriptを書いています。
これは、JSONファイルを読み込み商品を表示させるものです。
しかし、ページの一番下までいかないと次の48件が読み込む事が出来ません。

今教えていただきたいのは、一番下までいかなくても商品が出てくるような仕組みにしたいと考えています。

例えば下から300pxの所で新しい商品を表示させる事ができれば
一番嬉しいです。

お手数お掛け致しますが、ご教示いただければと思います。
宜しくお願い致します。

-----ここからソース------------------

$(function(){
    var setArea = $('#loadarea'),
    loadNum = 48, // 読み込む個数
    loadTxt = '', // Loading中の表示テキスト
    fadeSpeed = 500; // フェードスピード

    $(window).load(function(){
        var adjScrTop = $(document).scrollTop();
            $('html,body').animate({scrollTop:(adjScrTop)-1},0);
            $.ajax({
                url: '/js/itemlist.json',
                dataType: 'json',
                success : function(data){
                    var dataLengh = data.length,
                    loadItemLength = setArea.find('.loadItem').length,
                    setAdj = (dataLengh)-(loadItemLength),
                    setBeg = (dataLengh)-(setAdj);
                    if(!(dataLengh == loadItemLength)){
                        setArea.append('<div id="nowLoading">' + loadTxt + '</div>');
                        if(loadItemLength == 0){
                            for (var i=0; i<loadNum; i++) {
                                $('<div class="loadItem col-xs-4 col-sm-3" id="item' + data[i].itemNum + '"><p class="item_image"><a href="' + data[i].item_url + '"><img src="' + data[i].item_pict + '" alt="' + data[i].item_name + '"></a><img src="images/' + data[i].classification + '.png" class="new_m"></p><p class="item_name"><a href="' + data[i].item_url + '">' + data[i].item_name + '</a></p></div>').appendTo(setArea).css({opacity:'0'}).animate({opacity:'1'},fadeSpeed);
                            }
                        } else if(loadItemLength > 0 && loadItemLength < dataLengh){
                            if(loadNum < setAdj){
                                for (var i=0; i<loadNum; i++) {
                                    v = i+setBeg;
                                    $('<div class="loadItem col-xs-4 col-sm-3" id="item' + data[v].itemNum + '"><p class="item_image"><a href="' + data[v].item_url + '"><img src="' + data[v].item_pict + '" alt="' + data[v].item_name + '"></a><img src="images/' + data[v].classification + '.png" class="new_m"></p><p class="item_name"><a href="' + data[v].item_url + '">' + data[v].item_name + '</a></p></div>').appendTo(setArea).css({opacity:'0'}).animate({opacity:'1'},fadeSpeed);
                                }
                            } else if(loadNum >= setAdj){
                                for (var i=0; i<setAdj; i++) {
                                    v = i+setBeg;
                                    $('<div class="loadItem col-xs-4 col-sm-3" id="item' + data[v].itemNum + '"><p class="item_image"><a href="' + data[v].item_url + '"><img src="' + data[v].item_pict + '" alt="' + data[v].item_name + '"></a><img src="images/' + data[v].classification + '.png" class="new_m"></p><p class="item_name"><a href="' + data[v].item_url + '">' + data[v].item_name + '</a></p></div>').appendTo(setArea).css({opacity:'0'}).animate({opacity:'1'},fadeSpeed);
                                }
                            }
                        } else if(loadItemLength == dataLengh){
                            return false;
                        }
                    } else {
                        return false;
                    }
                },
                complete : function(){
                    $('#nowLoading').each(function(){
                        $(this).remove();
                    });
                    return false;
                }
            });
    }).scroll(function(){
        scrollLoad();
    });

    function scrollLoad(){
        var winHeight = window.innerHeight ? window.innerHeight : $(window).height(),
        posBottom = $(document).height() - winHeight;
        if($(this).scrollTop() == posBottom) {
            var adjScrTop = $(document).scrollTop();
            $('html,body').animate({scrollTop:(adjScrTop)-1},0);
            $.ajax({
                url: 'js/itemlist.json',
                dataType: 'json',
                success : function(data){
                    var dataLengh = data.length,
                    loadItemLength = setArea.find('.loadItem').length,
                    setAdj = (dataLengh)-(loadItemLength),
                    setBeg = (dataLengh)-(setAdj);
                    if(!(dataLengh == loadItemLength)){
                        setArea.append('<div id="nowLoading">' + loadTxt + '</div>');
                        if(loadItemLength == 0){
                            for (var i=0; i<loadNum; i++) {
                                $('<div class="loadItem col-xs-4 col-sm-3" id="item' + data[i].itemNum + '"><p class="item_image"><a href="' + data[i].item_url + '"><img src="' + data[i].item_pict + '" alt="' + data[i].item_name + '"></a><img src="images/' + data[i].classification + '.png" class="new_m"></p><p class="item_name"><a href="' + data[i].item_url + '">' + data[i].item_name + '</a></p></div>').appendTo(setArea).css({opacity:'0'}).animate({opacity:'1'},fadeSpeed);
                            }
                        } else if(loadItemLength > 0 && loadItemLength < dataLengh){
                            if(loadNum < setAdj){
                                for (var i=0; i<loadNum; i++) {
                                    v = i+setBeg;
                                    $('<div class="loadItem col-xs-4 col-sm-3" id="item' + data[v].itemNum + '"><p class="item_image"><a href="' + data[v].item_url + '"><img src="' + data[v].item_pict + '" alt="' + data[v].item_name + '"></a><img src="images/' + data[v].classification + '.png" class="new_m"></p><p class="item_name"><a href="' + data[v].item_url + '">' + data[v].item_name + '</a></p></div>').appendTo(setArea).css({opacity:'0'}).animate({opacity:'1'},fadeSpeed);
                                }
                            } else if(loadNum >= setAdj){
                                for (var i=0; i<setAdj; i++) {
                                    v = i+setBeg;
                                    $('<div class="loadItem col-xs-4 col-sm-3" id="item' + data[v].itemNum + '"><p class="item_image"><a href="' + data[v].item_url + '"><img src="' + data[v].item_pict + '" alt="' + data[v].item_name + '"></a><img src="images/' + data[v].classification + '.png" class="new_m"></p><p class="item_name"><a href="' + data[v].item_url + '">' + data[v].item_name + '</a></p></div>').appendTo(setArea).css({opacity:'0'}).animate({opacity:'1'},fadeSpeed);
                                }
                            }
                        } else if(loadItemLength == dataLengh){
                            return false;
                        }
                    } else {
                        return false;
                    }
                },
                complete : function(){
                    $('#nowLoading').each(function(){
                        $(this).remove();
                    });
                    
                    return false;
                }
            });
            return false;
            
        }
    }
});
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

scrollload の3行目の if 文を説明できますか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/26 09:39

    ご回答ありがとうございました。
    以下の部分ですが、
    if($(this).scrollTop() == posBottom)
    はっきり説明する事ができません。
    申し訳ございません。

    キャンセル

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    15922questions

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