penomoran halaman javascript sederhana untuk ‹li›‹a href

Saya mencoba membuat pagination javascript sederhana (hanya tombol berikutnya sebelumnya) untuk tautan <li> saya. ini daftar tautan saya:

<div class="panel-body">
    <div id="listingTable">
        <ul id = "Mylinks" class="paging">
            <li style="display: none;"><a href="http://site1.com" rel="nofollow">Description1</a></li>
            <li style="display: none;"><a href="http://site2.com" rel="nofollow">Description2</a></li>
            <li style="display: none;"><a href="http://site3.com" rel="nofollow">Description3</a></li>
            <li style="display: none;"><a href="http://site4.com" rel="nofollow">Description4</a></li>
            <li style="display: none;"><a href="http://site5.com" rel="nofollow">Description5</a></li>
            <li style="display: none;"><a href="http://site6.com" rel="nofollow">Description6</a></li>
            <li style="display: none;"><a href="http://site7.com" rel="nofollow">Description7</a></li>
            <li style="display: none;"><a href="http://site100.com" rel="nofollow">Description100</a></li>
            //Number of links is unlimited.
        </ul>
    </div>
    <ul class="pager">
      <li><a href="/idjavascript:prevPage()" id="btn_prev">previous</a></li>
      <li><a href="/idjavascript:nextPage()" id="btn_next">next</a></li>
    </ul>
</div>

Saya menggunakan bootstrap css. Saya tidak ingin menggunakan jquery. kode saya hampir berfungsi.

 var current_page = 1;
    var records_per_page = 3;

    function prevPage()
    {
        if (current_page > 1) {
            current_page--;
            changePage(current_page);
        }
    }

    function nextPage()
    {
        if (current_page < numPages()) {
            current_page++;
            changePage(current_page);
        }
    }

    function changePage(page)
    {
        var btn_next = document.getElementById("btn_next");
        var btn_prev = document.getElementById("btn_prev");
        var listing_table = document.getElementById("listingTable");
        var page_span = document.getElementById("page");

        // Validate page
        if (page < 1) page = 1;
        if (page > numPages()) page = numPages();

var list = document.getElementById('linkbox'),items = list.childNodes;
    for (var i = (page-1) * records_per_page; i < (page * records_per_page) && i < childNodes.length; i++) {
        items[i].style.display = "block";
    }
        }
        page_span.innerHTML = page + "/" + numPages();

        if (page == 1) {
            btn_prev.style.visibility = "hidden";
        } else {
            btn_prev.style.visibility = "visible";
        }

        if (page == numPages()) {
            btn_next.style.visibility = "hidden";
        } else {
            btn_next.style.visibility = "visible";
        }
    }

    function numPages()
    {
        return Math.ceil(objJson.length / records_per_page);
    }

    window.onload = function() {
        changePage(1);
    };

Tapi masalahnya adalah var objJson = [] Saya ingin menggunakan style="display: block;" untuk halaman1 dan meletakkan style="display: none;" untuk link lainnya. ketika halaman berubah, gaya juga berubah.

Diperbarui:

Saya meletakkan tautan saya langsung di dalam <ul> Saya pikir itu bukan ide yang baik untuk memasukkannya ke dalam skrip java dan hanya menampilkan sebagian saja, Perbedaannya adalah: Google mempertimbangkan semua tautan di dalam <ul></ul> tetapi ketika saya memasukkannya ke dalam javascript hanya halaman 1 yang ada di <ul></ul>. Saya harus mendapatkan semua tautan dengan:

var list = document.getElementById('Mylinks'),
    items = list.childNodes;

for (var i = 0, length = childNodes.length; i < length; i++)
{
    if (items[i].nodeType != 1) {
       continue;
    }
    items[i].style.display = "block"; 
}

dan perbarui gaya untuk halaman 1 menjadi style="display: block;"


person محمد علی پور فتحک    schedule 11.10.2016    source sumber
comment
Tautan Anda (<li><a href="http://site1.com" rel="nofollow">Description1</a></li>) dibuat secara dinamis dengan objJson Anda?   -  person Steeve Pitis    schedule 11.10.2016
comment
secara dinamis tetapi dengan php, langsung di dalam <ul class="paging"></ul> Saya rasa saya harus menghapus var objJson = [] dan mengubah kode di dalamnya. @SteevePitis   -  person محمد علی پور فتحک    schedule 11.10.2016
comment
Arf Saya telah melakukan sesuatu dengan objJson. Coba lakukan hal yang sama dengan php dan hapus initPages saya   -  person Steeve Pitis    schedule 11.10.2016


Jawaban (1)


Jika saya memahami apa yang Anda inginkan, akan lebih mudah untuk mengatakan <ul> mewakili satu halaman.

Menurut ini, Anda dapat melakukan sesuatu seperti ini:

var current_page = 1;
var records_per_page = 3;

var objJson = [
    { adName: "AdName 1"},
    { adName: "AdName 2"},
    { adName: "AdName 3"},
    { adName: "AdName 4"},
    { adName: "AdName 5"},
    { adName: "AdName 6"},
    { adName: "AdName 7"},
    { adName: "AdName 8"},
    { adName: "AdName 9"},
    { adName: "AdName 10"}
]; // Can be obtained from another source, such as your objJson variable

function prevPage()
{
    if (current_page > 1) {
        current_page--;
        changePage(current_page);
    }
}

function nextPage()
{
    if (current_page < numPages()) {
        current_page++;
        changePage(current_page);
    }
}

function changePage(page)
{
    var btn_next = document.getElementById("btn_next");
    var btn_prev = document.getElementById("btn_prev");
    var page_span = document.getElementById("page");

    // Validate page
    if (page < 1) page = 1;
    if (page > numPages()) page = numPages();

    if(document.querySelector('.current')) document.querySelector('.current').classList.remove('current');
    document.getElementById('page'+page).classList.add('current')
    
    page_span.innerHTML = page + "/" + numPages();

    if (page == 1) {
        btn_prev.style.visibility = "hidden";
    } else {
        btn_prev.style.visibility = "visible";
    }

    if (page == numPages()) {
        btn_next.style.visibility = "hidden";
    } else {
        btn_next.style.visibility = "visible";
    }
}

function numPages()
{
    return Math.ceil(objJson.length / records_per_page);
}

function initPages() {
  var ul;
  var container = document.getElementById("listingTable");
  for(var i = 0; i<objJson.length; i++) {
    if(i%records_per_page === 0){
      ul = document.createElement('ul');
      ul.className = "paging";
      ul.id = "page"+ ((i/records_per_page)+1);
      container.appendChild(ul);
    }
    
    var li = document.createElement('li');
    var a = document.createElement('a');
    a.href = '#';
    a.innerHTML = objJson[i].adName;
    li.appendChild(a);
    ul.appendChild(li);
  }
  changePage(1);
}

window.onload = function() {
    initPages();
    
};
.paging {
  display: none; 
}

.paging.current{
  display: block;
}
<div class="panel-body">
    <div id="listingTable">
    </div>
    <ul class="pager">
      <li><a href="/idjavascript:prevPage()" id="btn_prev">قبلی</a></li>
      <li><a href="/idjavascript:nextPage()" id="btn_next">بعدی</a></li>
    </ul>
</div>
<span id="page"></span>

person Steeve Pitis    schedule 11.10.2016
comment
Terima kasih atas tayangan ulang Anda. Tapi saya ingin meletakkan tautan saya langsung di dalam html. Saya tidak ingin memasukkannya ke dalam javascript var objJson = [] google mempertimbangkan tautan di dalam ul› ketika saya memasukkannya ke dalam javascript, hanya sebagian yang ada dalam html yang dipertimbangkan. Saya akan Menghapus var objJson = [] Sepenuhnya dan menggunakan var list = document.getElementById('list_name'), items = list.childNodes; for (var i = 0, length = childNodes.length; i < length; i++) { if (items[i].nodeType != 1) { continue; } items[i].innerHTML = "<a>text</a>"; } Untuk menemukan ‹li› dan hanya menampilkan halaman 1 - person محمد علی پور فتحک 11.10.2016
comment
Kemudian dengan php Anda, Anda hanya perlu mengikuti struktur yang sama yang saya buat <ul class='paging' id='page1'><li ... /></ul>, hapus initPages() saya dan kode ini akan terus berfungsi. - person Steeve Pitis; 11.10.2016
comment
Silakan lihat Pertanyaan yang Diperbarui! @Steeve Pitis - person محمد علی پور فتحک 11.10.2016
comment
Bisakah Anda memeriksa mengapa items[i].style.display = "block"; tidak berfungsi? Saya menulis ulang semua kode di atas @Steeve Pitis - person محمد علی پور فتحک 11.10.2016
comment
var items = document.querySelectorAll('#Mylinks li'); for (var i = 0, length = item.length; i < length; i++) { items[i].style.display = "block"; } coba dengan ini - person Steeve Pitis; 11.10.2016