随机数组不会更新

时间:2013-11-25 23:26:46

标签: javascript arrays random

我正在编写代码,其中数组中会有多个动作。

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

名词改变的唯一方法是刷新页面。到底发生了什么?

1 个答案:

答案 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个随机值。

如果您想要随机+不同,那么您还需要跟踪已经选择的每个值,直到所有值都被选中,然后重新设置跟踪器,但这是一个稍微复杂的过程。