函数能正常执行并返回数据,但无法在页面中显示,根本原因在于缺少 dom 更新逻辑——return 仅向调用者传递值,不会自动渲染到 html;需手动将返回结果插入目标元素。
你的 nextTwo() 函数逻辑本身是正确的:它能准确切片出第 2 页(索引 10–19)的 10 个对象,并通过 return 正常返回数组。问题不在于“无法返回”,而在于你没有使用这个返回值更新页面。
HTML 中的 onclick="nextTwo()" 会执行函数,但忽略其返回值。JavaScript 的 return 不会自动绑定到 DOM —— 它只是把结果交还给调用上下文(比如赋值给变量或传入另一个函数)。因此,你需要显式地:
✅ 正确做法示例(含健壮性优化):
const objList = [
{ id: 1, name: "Item 1" }, { id: 2, name: "Item 2" },
/* ... 共 20 个对象 */
{ id: 20, name: "Item 20" }
];
let currentPage = 2; // 可改为动态管理,支持多页切换
const step = 10;
function nextTwo() {
const start = (currentPage - 1) * step; // 更直观:第1页 → [0,10),第2页 → [10,20)
const end = Math.min(start + step, objList.length)
; // 防止越界(如总数量非整除)
const nextObj = objList.slice(start, end);
// ✅ 关键:将数据渲染到页面
const html = nextObj.map(item =>
`${item.id}: ${item.name}`
).join('');
document.getElementById('x_list').innerHTML = html;
// 可选:返回值仍可保留,便于测试或链式调用
return nextObj;
}⚠️ 注意事项: