【问题标题】:Display array item once(on click)显示数组项目一次(点击)
【发布时间】:2016-05-22 10:51:10
【问题描述】:

这就是我想要做的..

  1. 单击按钮时会显示随机数组项。
  2. 数组项只能显示一次。

目前我已将代码设置为:

  1. 点击时会显示随机数组项。
  2. 按钮单击继续循环,没有结束。
  3. 按钮单击会多次显示该项目。

这里是代码http://codepen.io/fun/pen/aNedGQ?editors=1010的链接

我们将不胜感激! =)

下面是代码,和上面的链接一样。

HTML

<div id ='display'> </div>
<div class ='button'>Next item</div>

JS

var items = [1, 2, 3, 4, 5, 6, 7, 8, 9];

// Randomly on click display each item
// Only display each item once
// Stop when all items have been displayed

// Display to screen
var display = function(info) {
  var x = document.getElementById('display');
  x.innerHTML = info;
}
// Create random number
var random = Math.floor(Math.random() * items.length);
// Click handler 
$('.button').on('click', function() {
// Display random arr items to screen
  display(items[random]);
// Next item to be random
  random = (random + Math.floor(Math.random() * items.length)) % items.length;
});

【问题讨论】:

  • 创建一个数组,然后将显示的值附加到它,所以当它每次想要显示该值时,首先检查它是否已经显示,如果不是,首先在显示的值数组中检查它在那里可用,然后你可以前进并显示它..!
  • 如果你想要解决方案是 JS 而不是 jQuery ,我可以发布吗??
  • 是的,数组splice() 是一种有趣的方式来完成你真正想做的事情:w3schools.com/jsref/jsref_splice.asp

标签: javascript jquery html css arrays


【解决方案1】:

您可以显示随机项目,然后将其从数组中删除

var items = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$('.button').click(function() {
  var rand = items[Math.floor(Math.random() * items.length)];
  $('#display').text(rand);
  items.splice(items.indexOf(rand), 1);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='button'>Next item</div>
<div id='display'></div>

【讨论】:

  • 这很好用,一旦没有更多的项目显示就结束了。谢谢