javascript - JavaScript関数は一度に6つのIDで実行されます(6回の呼び出し後に戻りますか?)

原文 javascript jquery ajax dom

呼び出されるデータを6つのグループに分離できるように使用できる関数があるかどうか疑問に思っています。

これは長い形式のコードです

var currentResults;

function init() {
    getProducts();
}

function getProducts() {
    $.ajax({
        url:"php/products.php",
        dataType: "json",
        data: { public: true },
        success:function(result){
            processResults(result);
        }
    });
 }

function processResults(results) {
     currentResults = null;

    if (!results && !results.products) 
        return; 

    currentResults = results.products;

    for (var i = 0; i < results.products.length; i++) {
        processResult(results.products[i]);
    }

     $(".galleryitem").click(handleThumbnailClick);
 }

function processResult(result) {
    var newDiv = '<div id="galleryitem' + result.id + '" class="galleryitem">';

    newDiv += '<div class="imageHover" style="background: ' + result.color + '">&nbsp;</div>';
    newDiv += '<img class="galleryImage" src="' + encodeImagePath(result.thumbnail) + '" />';

    if (result.artist)
        newDiv +=   '<div class="imageArtist">' + result.artist + '</div>';

    newDiv += '< /div>';

    $('#gallery').append(newDiv);

}


この機能で画像を6のグループに分類できるようにしたいのですが…(下の***の領域を参照)

 function processResult(result) {
    var newDiv = '<div id="galleryitem' + result.id + '" class="galleryitem">';

    newDiv += '<div class="imageHover" style="background: ' + result.color + '">&nbsp;</div>';
    newDiv += '<img class="galleryImage" src="' + encodeImagePath(result.thumbnail) + '" />';

    if ***(!!first 6 called!!)***
        newDiv +=   '<div class="imageArtist">' + result.artist + '</div>';

    newDiv += '< /div>';

    $('#galleryfirst').append(newDiv);

    if ***(!!second 6 called!!)***
        newDiv +=   '<div class="imageArtist">' + result.artist + '</div>';

    newDiv += '< /div>';

    $('#gallerysecond').append(newDiv);
}


このようなことは可能ですか?または、このコード全体をオーバーホールする必要がありますか?
答え
まず、インデックスを渡します:

 for (var i = 0; i < results.products.length; i++) {
    processResult(results.products[i], i);
 }


それを確認してください:

function processResult(result, index) {
   var newDiv = ...

   //check if the index is a multiple of 6
   if(index % 6 == 0){
      //do something every six results
   }


HTH、

-テッド
関連記事

javascript - Googleマップの「noClear」が機能しない

javascript - Ajax呼び出しを使用してMVCのreturn viewメソッドでJSONデータを返す方法

javascript - JavaScriptでの空のオブジェクト参照、nullまたは未定義のベストプラクティスを表すアプローチはどれですか。 [閉まっている]

javascript - サーバーにGoogleドライブファイルをダウンロードする方法

javascript - 重いjsウィジェットをロードすると、ブラウザが応答を停止する

javascript - id / classを使用して要素を他の要素のそばに配置するにはどうすればよいですか?

javascript - JavaScript IDのグループ化

javascript - jQuery / JavaScriptを使用してラジオボタン値の合計を見つける方法は?

javascript - ES6モジュール(JavaScript)

javascript - div内のangularJS変数