gpt4 book ai didi

javascript - 带有 appendChild 变为未定义的简单 Javascript 分页器

转载 作者:行者123 更新时间:2023-11-30 15:22:03 24 4
gpt4 key购买 nike

我已经看过一点,所以我把它扔在这里。我想为网站上的大表格制作自己的简单分页,但遇到了障碍。这是我的代码/标记:

window.addEventListener('load', function() {
table_pagers = document.getElementsByClassName("pagination");

paginate_tables(table_pagers);
});

function paginate_tables(table_pagers) {
for (var i = 0; i <= table_pagers.length - 1; i++) {
table_pagers[i].innerHTML = make_nums(table_pagers[i]);
}
};

function make_nums(table_sibling) {
table = table_sibling.previousElementSibling.children[1];
nums = table.childElementCount / 10;
for (var i = 0; i <= 2; i++) {
var li = document.createElement('li');
var a = document.createElement('a');
a.textContent = i;
a.href = "\'#\'"
li.appendChild(a);
table_sibling.appendChild(li);
}
};
<table class="table">
<thead>
</thead>
<tbody>
</tbody>
</table>
<ul class="pagination">
</ul>

令人难以置信的问题(我尝试了 insert adjacentHTML 和 appendChild)是这段代码将完美地插入列表项,但是一旦它退出 make_nums 函数,整个 li 集就会变成未定义的。

或者,如果我替换表,它们都会完美地附加到表的末尾,但当然它们需要在 ul 中,而不是表中。我到底在这里没看到什么?

最佳答案

问题出在这里:

    table_pagers[i].innerHTML = make_nums(table_pagers[i]);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

您的 make_nums 函数不返回任何特定值,因此调用它的结果是 undefined。然后您将使用它来替换列表的内容。

您的函数已经将元素添加到列表中,因此没有理由设置 innerHTML;只需删除上面带下划线的部分:

window.addEventListener('load', function() {
var table_pagers = document.getElementsByClassName("pagination");

paginate_tables(table_pagers);
});

function paginate_tables(table_pagers) {
for (var i = 0; i <= table_pagers.length - 1; i++) {
make_nums(table_pagers[i]);
}
};

function make_nums(table_sibling) {
var table = table_sibling.previousElementSibling.children[1];
var nums = table.childElementCount / 10;
for (var i = 0; i <= 2; i++) {
var li = document.createElement('li');
var a = document.createElement('a');
a.textContent = i;
a.href = "\'#\'"
li.appendChild(a);
table_sibling.appendChild(li);
}
};
<table class="table">
<thead>
</thead>
<tbody>
</tbody>
</table>
<ul class="pagination">
</ul>


旁注:您的代码也成为 The Horror of Implicit Globals 的牺牲品(那是我贫血的小博客上的帖子)。请务必声明您的变量。我在上面添加了 table_pagerstablenums 的声明。

关于javascript - 带有 appendChild 变为未定义的简单 Javascript 分页器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43580158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com