将结果推送到数组

Pushing results to array

<tr>
    <td>1st</td>
    <td class="result horse1"></td>
</tr>
<tr>
    <td>2nd</td>
    <td class="result horse2"></td>
</tr>
<tr>
    <td>3rd</td>
    <td class="result horse3"></td>
</tr>
<tr>
    <td>4th</td>
    <td class="result horse4"></td>
</tr>

这是javascript中的游戏,当马越线时它会执行this.finish函数。

它将获取结果并将它们显示在 table 中,方法是将 类 更改为包含 ID。这工作正常但是当我然后将 ID 推入数组时它只会在抛出错误之前存储两个 id。

if (horse.lap == laps && horse.x == horse.startX + 5) {
    horse.finish();
}   

this.finish = function() {
    this.element.className = 'horse standRight';
    var table = document.getElementsByClassName('result');
    table[results.length].className = id;
    results.push(id);
    console.log(results);
  }

var results = [];

在table中显示结果时,也跳过第2行并在第3行放置一个id?

这是错误

如评论所述,您将整个类名替换为 id,因此类名中的 "result" 也消失了。

您可以将马 ID 部分单独替换为新的部分,即

table[results.length].className = "result " + id;

var currentClass = table[results.length].className;
table[results.length].className = currentClass.replace(/horse[0-9]/,id);

还有更多方法可以做到这一点,包括用 space 拆分类名等。