javascript - 如何循环遍历javascript数组并仅显示数组的一部分然后重复

标签 javascript pagination

我很难理解这个问题。我有一个包含 150 个项目的数组。我只想一次显示 50 个。因此,我将在显示屏末尾有一个按钮,上面写着:“显示 51-100”。 OnSubmit 该按钮,javascript 代码显示 51-100。同上,接下来 50 个。非常感谢您的建议!

         for(var i = 0; i < myArray.length; i++ ){
     document.getElementById("comment" + i).innerHTML = commentBody; 

}

需要写入项目的 HTML:

    <div style="clear:both"> <br> </div>
    <div  id="flapBox13" class="flapBox">
      <p id='whenFlap13' class="mscFlapTime"></p> 
      <b  id='flapSum13' class="mscFlapSumBold"></b>    
      <p     id='flap13' class="mscFlapText"></p>            
    </div> 

最佳答案

假设您有一个包含 150 项的列表。让我们给它一个自然名称list。首先,我们将编写一个函数将一个列表分为多个列表:

function take(n, list) {
    return list.slice(0, n);
}

function drop(n, list) {
    return list.slice(n);
}

function concat(lists) {
    return Array.prototype.concat.apply(this, lists);
}

function divide(n, list) {
    if (list.length) {
        var head = take(n, list);
        var tail = drop(n, list);
        return concat.call([head], [divide(n, tail)]);
    } else return [];
}

现在我们将您的列表分为每页 50 个元素的页面:

var pages = paginate(50, list);

function paginate(n, list) {
    return divide(n, list).map(function (items, index) {
        var number = n * index;

        return {
            start: number + 1,
            end: number + items.length,
            items: items
        };
    });
}

现在让我们看一些 HTML:

<h2 id="pageHeader"></h2>
<ol id="pageItems"></ol>
<div id="pageButtons"></div>

既然已经解决了,让我们再编写一些 JavaScript:

var header = document.getElementById("pageHeader");
var items = document.getElementById("pageItems");

function displayPage(page) {
    header.innerHTML = "Items " + page.start + " to " + page.end + ":";

    items.start = page.start;

    items.innerHTML = "";

    appendChildren(items, page.items.map(function (item) {
        var li = document.createElement("li");
        li.innerHTML = item;
        return li;
    }));
}

function appendChildren(element, children) {
    children.forEach(function (child) {
        element.appendChild(child);
    });
}

我们将默认显示第一页:

displayPage(pages[0]);

接下来我们将创建一堆按钮:

var buttons = document.getElementById("pageButtons");

appendChildren(buttons, pages.map(function (page, index) {
    var button = document.createElement("button");
    button.addEventListener("click", display);
    button.innerHTML = index + 1;
    return button;

    function display() {
        displayPage(page);
    }
}));

这就是大家。亲自观看演示:http://jsfiddle.net/EHfn3/

关于javascript - 如何循环遍历javascript数组并仅显示数组的一部分然后重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21298783/

相关文章:

javascript - 限制随机颜色生成器函数在 javascript 中生成特定颜色

filter - 使用微服务架构进行分页或过滤数据的策略有哪些?

javascript - IE7 中的 Window.Print() 功能因分页屏幕而中断

javascript - 无法在 jQuery 方法中使用alert()

javascript - 如何在 Google 跟踪代码管理器中强制使用 SSL

javascript - 在不使用 Google 帐户登录的情况下使用 Google Picker(使用 OAuth)

javascript - 在javascript中访问函数的变量?

javascript - 中继现代嵌套分页

php - 未定义索引 : page in

javascript - 使用 jquery 的 slider 分页