Javascript 随机报价机-如何避免重复报价
我的问题是关于我正在开发的报价生成器。它在onload:)上也可以工作,但我想忽略下一个onclick随机选取的报价与上一个显示的报价相同的情况。我希望它是不同的。谢谢你的提示 这是我的js代码:Javascript 随机报价机-如何避免重复报价,javascript,random,Javascript,Random,我的问题是关于我正在开发的报价生成器。它在onload:)上也可以工作,但我想忽略下一个onclick随机选取的报价与上一个显示的报价相同的情况。我希望它是不同的。谢谢你的提示 这是我的js代码: var quotes = [ { text: "Memento mori", autor: "Bractwo Męki Pańskiej" }, { text: "Jeśli możesz sobie coś wymarzyć, możesz też to zrobić.",
var quotes = [
{ text: "Memento mori",
autor: "Bractwo Męki Pańskiej" },
{
text: "Jeśli możesz sobie coś wymarzyć, możesz też to zrobić.",
autor: "Walt Disney"
},
{
text: "Wszystko jest możliwe. Niemożliwe wymaga po prostu więcej czasu.",
autor: "Dan Brown"
},
{
text: "Czerp z innych, ale nie kopiuj ich. Bądź SOBĄ",
autor: "Michel Quois"
},
{
text: "Kiedy łamiesz zasady, łam je mocno i na dobre.",
autor: "Terry Pratchett"
}
];
window.onload = function() {
quoteMachine.initialQuote()
};
var quoteMachine = {
initialQuote: function() {
var newInitialQuote = quotes[Math.floor(Math.random() * quotes.length)];
var newInitialQuoteText = newInitialQuote.text;
var newInitialQuoteAutor = newInitialQuote.autor;
document.getElementById("new-quote").innerHTML = newInitialQuoteText;
document.getElementById("autor").innerHTML = newInitialQuoteAutor;
}
};
这是一个工作示例:
正如我在下面所写的,要么我做错了什么,要么这些答案都不起作用。这是codepen.io的链接,也许有人可以看一下并帮助我:您可以将上一个随机索引保存在一个变量中,然后在第二次单击“随机”后,直到“新随机”与上一个不同 设置一个全局变量,例如
let previous=-1
,然后:
let random = Math.floor(Math.random() * quotes.length);
while(previous == random)
{
random = Math.floor(Math.random() * quotes.length)
}
previous = random
var newInitialQuote = quotes[random];
也许您可以添加一个标志,显示在数据中:
var quotes = [
{
showed: false,
text: "Memento mori",
autor: "Bractwo Męki Pańskiej"
},
{
showed: false,
text: "Jeśli możesz sobie coś wymarzyć, możesz też to zrobić.",
autor: "Walt Disney"
},
{
showed: false,
text: "Wszystko jest możliwe. Niemożliwe wymaga po prostu więcej czasu.",
autor: "Dan Brown"
},
{
showed: false,
text: "Czerp z innych, ale nie kopiuj ich. Bądź SOBĄ",
autor: "Michel Quois"
},
{
showed: false,
text: "Kiedy łamiesz zasady, łam je mocno i na dobre.",
autor: "Terry Pratchett"
}
];
window.onload = function() {
quoteMachine.initialQuote()
};
var quoteMachine = {
initialQuote: function(next) {
var rand_number = Math.floor(Math.random() * quotes.length);
var newInitialQuote = quotes[rand_number];
if (newInitialQuote.showed) {
var next = -1;
for (var i = 0; i < quotes.length; i++) {
if (quotes[next].showed == false) {
break;
}
}
if (next == -1) {
document.getElementById("new-quote").innerHTML = "Sorry I have not new quotes";
document.getElementById("autor").innerHTML = "John Doe";
return;
}
rand_number = next;
newInitialQuote = quotes[rand_number];
}
quotes[rand_number].showed = true;
var newInitialQuoteText = newInitialQuote.text;
var newInitialQuoteAutor = newInitialQuote.autor;
document.getElementById("new-quote").innerHTML = newInitialQuoteText;
document.getElementById("autor").innerHTML = newInitialQuoteAutor;
}
};
var引号=[
{
显示:错误,
文字:“森喜朗纪念”,
自动:“两个Męki Panęskiej”
},
{
显示:错误,
文本:“Jeśli możesz sobie cośwymarzyć,możesz teżto zrobić。”,
自动:沃尔特·迪斯尼
},
{
显示:错误,
文字:“Wszystko开玩笑,尼莫·利韦·维马加·普罗斯图·维切伊·捷克。”,
自动:丹·布朗
},
{
显示:错误,
文字:“Czerp z innych,ale nie kopiuj ich.BądźSOBĄ”,
作者:“米歇尔·库瓦”
},
{
显示:错误,
文字:“基迪·阿米斯·扎萨迪,我是莫克诺·纳多布雷。”,
自动:特里·普拉切特
}
];
window.onload=函数(){
quoteMachine.initialQuote()
};
变量quoteMachine={
initialQuote:函数(下一个){
var rand_number=Math.floor(Math.random()*quotes.length);
var newInitialQuote=quotes[rand_number];
if(newInitialQuote.show){
var-next=-1;
for(var i=0;i
每次生成随机数时,如果我做错了什么或上述代码不起作用,请将引号数组洗牌。我已经将let prevuios包含在函数外,而在函数内-它有时仍然重复相同的引用。