【问题标题】:loop through array text responses遍历数组文本响应
【发布时间】:2015-07-04 18:20:47
【问题描述】:

当在我的网站上选择一个按钮时,我试图显示不同的输出。

HTML:

<div class="question">
  <p>How many sides does a hexagon have?</p>
  <button class="right-answer" onclick="showResult(this)">6</button>
  <button class="wrong-answer" onclick="showResult(this)">10</button>
</div>

<div>
  <p id="answer"></p>
</div>

JS:

 var _i = 0;
 var _wrongs = [
   'Incorrect!',
   'Wrong!',
   'False!',
   'Mistake!',
   'Error!',
   'Retry!'
 ];

 function showResult(b) {
   var res = document.getElementById('answer');
   if (b.classList.contains('right-answer')) {
     res.innerHTML = 'Correct'
   } else {
     res.innerHTML = _wrongs[_i];
     _i = _i > 1 ? 0 : _i + 1;
  }
 }

选择不正确的按钮时,每次应显示_wrongs 987654324中的值,输出不应自行重复。

这在一定程度上是可行的,但是……当多次选择错误的答案时,它似乎最多只能输出3个不同的答案,然后又会重新开始。

我怎样才能让它运行整个数组的长度?

【问题讨论】:

标签: javascript jquery html css arrays


【解决方案1】:

你的三元线有误。将_i &gt; 1 替换为_i &gt;= _wrongs.length-1

_i = _i >= _wrongs.length-1 ? 0 : _i + 1;

这是一个updated codepen,它可以按您的预期工作。

以防万一你好奇...modulo operator% 计算除法方程的余数,在这里也可以很好地工作。

_i++;
_i = _i % _wrongs.length;

working example here

【讨论】:

  • 嘿@user1752759 - 你是对的。我更新了我的回复和 codepen 示例,以便您可以看到一个工作示例。
【解决方案2】:

改变这一行:

_i = _i > 1 ? 0 : _i + 1;

到这里

 _i = _i >= _wrongs.length  ? 0 : _i + 1;

【讨论】:

  • 浏览整个错误响应列表后,会显示“未定义”输出。非常感谢您协助解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 2021-10-11
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
相关资源
最近更新 更多