javascript - 我试图阻止我的函数在单击按钮时两次显示同一对象

标签 javascript arrays


我已经有一段时间试图弄清楚如何阻止我的代码打印相同的引用两次。

此外,当数组中的每个对象都被打印出来时,我希望它能以某种方式重置。这样您在浏览完所有引言后就可以浏览它们。

这是我的代码的重要部分:

document.getElementById('loadQuote').addEventListener("click", printQuote, false);

printQuote 函数仅包含从我的数组访问信息的信息:

var randomObjectNumber = getRandomQuote();

var html = "<p class='quote'>"
        + quotes[randomObjectNumber].quote +
        "</p>"; 

document.getElementById('quote-box').innerHTML = html;

每次单击事件监听器时都会显示一个随机对象:

function getRandomQuote () {

var randomObjectNumber = Math.floor(Math.random() * quotes.length );

return randomObjectNumber;
}

我对如何做到这一点有一些想法,并且我已经尝试过,但没有成功。我尝试为每个对象赋予一个 bool 属性,但我似乎无法在不扰乱 printQuote 函数的情况下为每个属性分配一个 bool 值。

我还尝试将显示的对象分配给不同的数组,但那里发生了同样的问题。

我觉得 eventListener 有一些我不完全理解的概念,因为每次我尝试操作显示的对象时,我最终都会更改每个对象。

顺便说一下,这是数组中典型对象的样子:

{quote : "Darkness is merely the absence of light"}

(我还为该对象分配了其他属性,但我觉得呈现它们是多余的)

如果有人可以解释或给我一个提示,如何解决我已经困扰了一段时间的这个问题。

一些提示将不胜感激!

祝你有美好的一天。

塞巴斯蒂安。

编辑:所有代码:https://jsfiddle.net/fusqb7hz/

最佳答案

基本上你需要什么:

  1. 创建一个单独的数组来存储您已使用过的所有引号。

  2. 从初始数组中删除引号。

  3. 检查初始数组中是否仍有引号,如果没有,则从备份数组中取回它们。

关于javascript - 我试图阻止我的函数在单击按钮时两次显示同一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37800942/

相关文章:

javascript - chrome.browserAction.setIcon - 下载的图像

javascript - AJAX调用返回数据但不提示下载

javascript - 在 const = require 中显示文件结构的正确方法?

ruby-on-rails - 如何在Ruby中正确使用inject方法

c - 将文件中的值读入结构数组时出错

arrays - 两个字符串数组的R语言跨乘积组合

javascript - 如何使元素位置固定但又离开窗口?

javascript - 使用 jQuery 设置选择选项的 HTML 数据属性

javascript - 无序字符串数组与 lodash 比较

java - 将大数据流式传输到 Apache Nifi 中的流文件,无需 OOM