【发布时间】:2020-11-09 02:00:24
【问题描述】:
我有一个名称列表,每个名称都分配了点,每次我单击与该名称相关的按钮时,它都会添加一个点,然后在按下 rank 按钮时将它们排在 html 文件中,一切正常但是当我进行更改并再次单击排名时,它会添加另一个列表而不是更新现有列表:
let characters = [
{name: document.getElementById("name 1").textContent, points: 0},
{name: document.getElementById("name 2").textContent, points: 0},
{name: document.getElementById("name 3").textContent, points: 0}
];
function choice (button) {
const buttonCharacterObject = characters.find(obj => obj.name === button.textContent);
buttonCharacterObject.points += 1;
const ranking = characters.sort((a, b) => (a.points < b.points ? 1 : -1));
console.log(ranking);
}
function rank() {
characters.forEach(function (character) {
document.getElementById('rank').innerHTML += '<li>' + character.name + '</li>
})}
<button id="name 1" onclick="choice(this)">Martin</button>
<button id="name 2" onclick="choice(this)">Sam</button>
<button id="name 3" onclick="choice(this)">John</button>
<button onclick="rank()">Rank Characters</button>
<ol id="rank">
</ol>
【问题讨论】:
-
“它添加了另一个列表”不只是在
<ol id="rank">列表中推送另一个<li>元素吗? -
@Jan Stránský 是的,很抱歉没有很好地解释它,它是:1- 名称 1、2- 名称 2、3- 名称 3、4- 名称 1、5- 名称 2、6- 名称3
-
然后它只是按照您要求程序执行的操作。在
rank()函数内部,清除ol之前characters.forEach的内容 -
我该怎么做?
-
.innerHTML=""
标签: javascript html arrays function html-lists