- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在为一个类构建一个随机报价生成器,该类采用对象数组(报价)并根据随机数生成函数显示随机报价。为了获得额外的学分,该类(class)要求我找到一种方法,使引号只显示一次,然后再次循环引号。为此,我决定尝试创建一个空数组,然后将生成的任何引号推送到该数组,并将其从原始数组中切出,然后运行一个 for 循环来检查我的原始数组长度是否为 0,如果是,循环遍历新数组,将每个索引推回我原来的索引。
我遇到的问题是,当我从原始数组中拼接出索引时,它留下了一个空数组,该数组现在是循环的一部分但未定义。该索引最终会根据随机生成器显示并带来“未定义”错误。我没有推/拼接方法的代码是 -
// event listener to respond to clicks on the page
// when user clicks anywhere on the page, the "makeQuote" function is called
document.getElementById('loadQuote').addEventListener("click", printQuote, false);
//defining variables
var message = '';
var viewedquotes = [];
//print function to print the randomly selected quote to the page
function print(message) {
var outputDiv = document.getElementById('quote-box');
outputDiv.innerHTML = message;
}
//a function that creates a random number between 0 and the length of quotes to randomly select an object or index of the quotes array and return the value of it.
function getRandomQuote() {
var quoteObject = quotes[Math.floor(Math.random() * quotes.length)];
return quoteObject;
}
//RandomColors function to generate random RGB values and return the values
function RandomColors() {
var red = Math.floor(Math.random() * 256);
var green = Math.floor(Math.random() * 256);
var blue = Math.floor(Math.random() * 256);
var colors = 'rgb(' + red + ',' + green + ',' + blue + ')';
return colors;
}
//Takes the random quote function stores it into var printObject and adds them to message variable as a string of paragraphs and spans.
//If citation and year are undefined it does not print them.
//Resets the message variable to be '' after for a new click to generate a new quote.
//Uses the getRandomColors function to change the body's background color each time the button is clicked.
function printQuote() {
var printObject = getRandomQuote();
message += '<p class="quote">' + printObject.quote + '</p>';
message += '<p class="source">' + printObject.source + '';
if (printObject.citation !== undefined) {
message += '<span class ="citation">' + printObject.citation + '</span>';
}
if (printObject.year !== undefined) {
message += '<span class ="year">' + printObject.year + '</span>';
}
message += '</p>';
print(message);
message = '';
var getRandomColors = RandomColors();
document.body.style.backgroundColor = getRandomColors;
}
我在最后一个函数中尝试的拼接和推送方法如下(这是在 printQuote() 函数中的 message = '' 行之后 -
var pushQuote = viewedquotes.push(printObject);
console.log(viewedquotes);
var indexOfQuote = indexOf(printObject);
var spliceQuote = quotes.splice(indexOfQuote,1);
var quotesLength = quotes.length;
console.log(quotes);
if (quotesLength === 0) {
for (i = 0; i <= viewedquotes ; i++) {
quotes.push(viewedquotes[i]);
}
viewedquotes= [];
}
有没有办法防止 splice 创建一个现在留在原始数组中的空数组?当我每次运行代码时都将 viewedquotes 和 quotes 都打印到控制台时,它会开始像
[对象][对象][对象][对象][对象]
然后去
[对象][对象][对象][对象][对象]
一旦原始数组的长度为 0,它就会重置为列表中的 [undefined],最终给出错误。
我知道可能还有其他方法可以完成此操作,但我只是想知道我的逻辑是否可以通过一些调整来实现?
谢谢
最佳答案
您可以调整您的方法,从引号数组拼接一个随机索引,然后将其压入第二个数组的堆栈顶部。喜欢:
var quotes1 = ["q1", "q2", "q3", "q4", "q5"];
var quotes2 = []; //<==empty array
var indexToSplice = Math.floor(Math.random() * quotes1.length);
var spliceQuote = quotes1.splice(indexToSplice, 1);
print(spliceQuote);
quotes2.push(spliceQuote);
但是你必须考虑改变。当引用数组为空时可能会发生这种情况。
if (quotes1.length == 0) {
quotes1 = quotes2;
quotes2 = [];
}
Here is a Fiddle我在哪里测试过它。
关于JavaScript 随机报价生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37063118/
F#中的“引号”是什么,它们的用途是什么? 最佳答案 In short, a quotation is metadata that represents the code of a particula
有人可以解释一下,为什么我可以使用 $1两次得到不同的结果? perl -wle '"ok" =~ /(.*)/; sub { "huh?" =~ /(.*)/; print for @_ }->(
我正在尝试向迷你购物车 block 添加一个 block (按钮):要么到 name="cart_sidebar"或者最好是 name="topCart.extra_actions"因为它自动呈现它的
我尝试做一些事情并尝试弄清楚。我只想向单击的 div 添加一个类。如果单击 div 号 1,然后单击 div 号 2,则该类将从 div1 中删除并添加到 div2 中。希望您能理解。 这是一个cod
我正在创建一个执行以下操作的 magento 支付扩展程序: 当用户在商家网站上点击结账时,他会被重定向到一个网站(如 paypal),并在该网站上输入他的支付数据。如果付款方式失败,用户将被重定向到
我正在开发一个自定义忠诚度积分模块。在结账期间,客户可以选择兑换积分。 在模块设置中,我创建了一个redeem_points eav_attribute(它存在于eav_attribute 表中),并
我目前正在做一个小项目,我需要对以下场景进行建模: 场景 客户打来电话,他想要一辆新车的报价。 销售代表。注册客户信息。 销售代表。在系统中创建报价,并将项目添加到报价(汽车)。 销售代表。通过电子邮
在 Elixir 中,什么时候应该使用 Macro.escape/1 而不是 quote/1?我看过beginner's guide但这没有帮助。 最佳答案 quote/2返回 abstract sy
我不明白什么是报价单。有人可以详细回答什么是 magento 报价、它们存储的数据、它们的生命周期和其他相关信息吗? 编辑:请注意区别:Magento vs Magneto。还有“magento”和“
我有一个 Terraform 脚本,它基于 Azure 市场中的此镜像在 Azure 上创建虚拟机: https://azuremarketplace.microsoft.com/en-us/mark
我正在尝试使用 JavaScript 重新创建(或“伪造”)Skype 报价。因此,我需要将 XML 字符串推送到剪贴板,格式为“SkypeMessageFragment”。警报显示效果很好,但使用
我的数据框 (ds) 中的每日数据看起来像这样跨越了几年: 对于每一天,我都需要将所有报价标准化为该特定日期的特定时间。例如,在 6 月 1 日,我需要将所有报价标准化为 6 月 1 日下午 3 点的
有人知道如何在 PL/SQL 存储过程中生成 .Net DateTime.Ticks,而无需在 Oracle 数据库中使用 .Net 程序集吗? 我在 .Net 中有一项服务,将 DateTime.T
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在 Steam API 中搜索发送 Steam 报价的方法,但找不到。可以使用 API 或者您知道其他方法吗?我想在 PHP/Symfony 中使用它。 最佳答案 您目前无法通过 API 创建交易报
我是一名初学者 Scheme 程序员,我想丰富我在函数式编程方面的知识。我在 DrRacket IDE 中编程。最近我发现了一些有趣的代码: (car ''(a b)) 输出: 'quote
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有以下结构化数据: { "@context": "https://schema.org/", "@type": "Offer", "priceCurrency": "EUR", "p
我是一名优秀的程序员,十分优秀!