Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-不重复代码的随机引用生成器_Javascript_Arrays - Fatal编程技术网

Javascript-不重复代码的随机引用生成器

Javascript-不重复代码的随机引用生成器,javascript,arrays,Javascript,Arrays,这是我关于堆栈溢出的第一篇文章 我在这里尝试了几个例子来解决这个问题,但找不到解决办法(我还是javascript新手) 我创建了一个随机报价生成器,每15秒或单击一次“更改背景和报价” 我现在试图让它不重复自己,并且记录控制台中显示的引号 引号位于“数组”中的“对象”内 代码如下。谢谢你的帮助 我有3个文件(index.html、quotes.js、script.js) -quotes.js document.getElementById('loadQuote').addEventListe

这是我关于堆栈溢出的第一篇文章

我在这里尝试了几个例子来解决这个问题,但找不到解决办法(我还是javascript新手)

我创建了一个随机报价生成器,每15秒或单击一次“更改背景和报价”

我现在试图让它不重复自己,并且记录控制台中显示的引号

引号位于“数组”中的“对象”内

代码如下。谢谢你的帮助 我有3个文件(index.html、quotes.js、script.js) -quotes.js

document.getElementById('loadQuote').addEventListener(“单击”,printQuote,true);
//设置间隔以每15秒显示一次打印qutoe
var intervalID=window.setInterval(myCallback,15000);
函数myCallback(){
printQuote();
}
//从数组引号中获取随机引号
函数getRandomQuote(){
var pickQuote=quotes[Math.floor(Math.random()*quotes.length)];
返回pickQuote;
}
//将报价打印为html
函数printQuote(){
var getQuote=getRandomQuote();
var消息=“”;
message+='

'+getQuote.quote+'

'; message+='

'+getQuote.source+'

'; message+='

'+getQuote.tag+'

'; document.getElementById('quote-box')。innerHTML=message; newColor(); } //函数将生成背景的随机颜色 var newColor=函数randomColor(){
document.body.style.background='#'+(Math.random()*0xFFFFFF一种方法是稍微更改
getRandomQuote()
函数:

function getRandomQuote () {
  return quotes.splice(Math.floor(Math.random() * quotes.length), 1);
}

说明:
Array.splice()
从数组中删除项目,并返回删除的项目。第一个参数是从何处开始拼接,第二个参数是要删除的项目数。这样使用时,使用过的引号将被删除,因此在重新加载页面之前无法再次使用。

我喜欢你的想法,并真正阅读这些引号!或许可以尝试编辑:

document.getElementById('loadQuote').addEventListener("click", printQuote, true);
可能有点过时。请尝试:

document.getElementById('loadQuote').onclick = function(name){yourScript}; 
建议这样做是因为我在尝试代码时收到以下错误消息:

“消息”:“未捕获的TypeError:无法读取null的属性'addEventListener'。请尝试简化


我认为你的工作对一个认为自己是初学者的人来说是非常令人印象深刻的!

如果没有更多的引号,行为应该是什么?@davidermann在这种情况下需要一个重置功能,允许重置“历史”以重新启动“循环”一种非破坏性的方法是从索引数组而不是引号数组本身中删除元素,即
[0,1,2,3,…]
。太棒了,工作起来很有魅力:)谢谢你的建议:+1:thx Tha'er,我在这个阶段需要一点好的动力:)…来自@Schlaus的建议实际上非常有效…谢谢你的帮助/建议:)