我正在编写代码,其中数组中会有多个动作。
var randomStringsWriting = [
'Write about ' + randomObjectsPlural,
'Think about ' + randomObjectsPlural,
'Love ' + randomObjectsPlural
“randomObjectsPlural”变量是另一个带名词的数组
var randomObjectsPluralList = [
'cats',
'dogs',
'people',
]
为了让我更容易编写一个变量而不是一个方程式,我最初设置它(请注意,这是初始数组中的变量,而不是“randomObjectsPluralList”)
var randomObjectsPlural = randomObjectsPluralList[0]
我希望每次点击都会更新文本,所以我写了这个函数:
$("#screen" ).click(function(){
randomObjectsPlural = randomObjectsPluralList[Math.floor(Math.random()*randomObjectsPluralList.length)];
});
奇怪的是,当我点击随机化时,尽管点击随机化,仍会保留相同的“randomObjectsPlural”变量。例如,屏幕最终会显示......
Write about cats
Think about cats
Love cats
......当我想要更像
的东西时Write about cats
Think about people
Love dogs
名词改变的唯一方法是刷新页面。到底发生了什么?
答案 0 :(得分:1)
我不确定你是如何连接所有这些的,但当你click
时,你必须一次又一次地随机化每个项目。
到目前为止您所显示的内容表明您只在开始时设置randomStringsWriting
数组,因此您只能在页面加载时更新它们。
您还要将每个项目设置为randomObjectsPlural
,但似乎您只是将变量设置为{1}。您需要为每个人随机化一个新的randomObjectsPlural
。
同样,由于我不知道您是如何实际连接它的,所以下面是一个实现您正在寻找的演示。
以下是一个例子。您仍然需要采用逻辑并将其调整为您自己的实现。
假设以下HTML:
<button id="screen">Click</button>
<div id="output"></div>
以下JavaScript可以解决这个问题:
var getRandomListItem = function () {
return randomObjectsPluralList[Math.floor(Math.random() * randomObjectsPluralList.length)]
};
var randomObjectsPluralList = [
'cats',
'dogs',
'people']
$("#screen").click(function () {
var randomStringsWriting = [
'Write about ' + getRandomListItem(),
'Think about ' + getRandomListItem(),
'Love ' + getRandomListItem()]
$('#output').html(randomStringsWriting.join('<br />'));
});
DEMO - 随机化字符串值
由于您只从可能的3中选择一个随机值,因此很可能您仍然可以获得所有3个随机值。
如果您想要随机+不同,那么您还需要跟踪已经选择的每个值,直到所有值都被选中,然后重新设置跟踪器,但这是一个稍微复杂的过程。