将结果推送到数组

时间:2018-03-28 18:51:33

标签: javascript html arrays push

<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功能。

通过更改类以包含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 = [];

在表格中显示结果时,它还会跳过第二行并在第三行中放置一个ID?

这是错误hors3, crossed first, horse1 second then break.

1 个答案:

答案 0 :(得分:1)

如上所述,你要用id替换整个类名,所以&#34;结果&#34;在className中也消失了。

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

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

OR

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

还有更多方法可以做到这一点,包括按空格分割类名等。