GitHub Pages部署的排行榜分数无法显示,求技术协助
修复排行榜分数不显示的问题
问题根源
你的JavaScript代码存在两处致命错误,导致脚本无法正常执行:
- 多余的闭合大括号:在
updateLeaderboardView函数结束后,多了一个额外的},破坏了代码结构,直接触发语法错误。 - 未定义的
elements变量:那段额外的颜色设置代码中,elements从未被声明或赋值,执行会抛出引用错误。
这两个错误会让浏览器终止脚本运行,updateLeaderboardView()函数根本没机会执行,表格自然无法加载分数数据。
修复后的完整代码
HTML部分
<button onclick="randomize()">Randomize</button> <a href="./submit.html">Submit your Score!</a> <table id="leaderboard"> <thead> <tr> <th>Rank</th> <th>Name</th> <th>Score</th> </tr> </thead> <tbody> <!-- scores will be inserted by the script here --> </tbody> </table>
JavaScript部分
let scores = [{ name: "Player 1", score: 300 }, { name: "Player 2", score: 370 }, { name: "Player 3", score: 500 }, { name: "Player 4", score: 430 }, { name: "Player 5", score: 340 }, ]; function updateLeaderboardView() { let leaderboard = document.getElementById("leaderboard").getElementsByTagName("tbody")[0]; leaderboard.innerHTML = ""; scores.sort(function(a, b) { return b.score - a.score; }); let colors = ["gold", "silver", "#cd7f32"]; for (let i = 0; i < scores.length; i++) { let rank = document.createElement("td"); let name = document.createElement("td"); let score = document.createElement("td"); rank.innerText = i + 1; // rank starts from 1 name.innerText = scores[i].name; score.innerText = scores[i].score; let scoreRow = document.createElement("tr"); if (i < 3) { // apply color for top 3 ranks scoreRow.style.color = colors[i]; } scoreRow.appendChild(rank); scoreRow.appendChild(name); scoreRow.appendChild(score); leaderboard.appendChild(scoreRow); } } updateLeaderboardView(); function randomize() { for (var i = 0; i < scores.length; i++) { scores[i].score = Math.floor(Math.random() * (600 - 300 + 1)) + 300; } updateLeaderboardView(); }
修复说明
删除了updateLeaderboardView函数后那段多余的错误代码(包括未定义的elements逻辑和多余括号),确保代码结构合法。原有的排行榜渲染逻辑本身正确:排序分数、创建表格行、为前三名设置颜色,保留后即可正常运行。
替换代码后,刷新页面就能看到正常显示的排行榜,点击Randomize按钮也能随机更新分数。
内容的提问来源于stack exchange,提问作者Virtual Genius... Kinda
相关产品推荐
相关产品推荐

