【问题标题】:How to random {1|2|3|4} by jQuery?如何通过 jQuery 随机 {1|2|3|4}?
【发布时间】:2012-05-06 13:33:59
【问题描述】:
<div class="xxx">Number is {1|2|3|4}, and {one|two|three|four}</div>

<div class="yyy"></div>

...

var data = $(".xxx").text();

$(".yyy").html(data);

http://jsfiddle.net/tQeCv/

我只需要这个输入:

数字是{1|2|3|4},{one|two|three|four}

像这样随机 输出:

数字是3和4

我不知道该怎么做......对不起:(

【问题讨论】:

  • 您的问题/目标是什么?我不知道,对不起:(
  • 我不知道这是对象还是数组....这是 JSON 吗?
  • 如果你引用data,它只是一个奇怪的字符串?试着解释一下你想要做什么?
  • 我想做... 输入:数字是 {1|2|3|4},{one|two|three|four} 输出:数字是 2,和 4(只是随机单词)

标签: javascript jquery html arrays json


【解决方案1】:

这不是 JSON。我假设您想随机拆分 1,2,3 和 4 个元素。您必须在 | 上拆分数据。字符,然后随机排序您的结果(或编写您自己的随机播放算法)。

var data = $(".xxx").text(); // initial data

var results = data.split("|"); // split on the "|" and store into results

然后您必须从数组中获取一个随机元素:

var randomNumber = Math.floor((Math.random()*4)+1); // random number (no more than 4 or the array will be out of bounds)

随机播放/显示数据:

var firstElement = results[randomNumber];
randomNumber = Math.floor((Math.random()*4)+1);
var secondElement = results[randomNumber];

等等……

【讨论】:

  • 文本解析步骤并不完美 - 应该只提取和拆分 {}s 之间的内容。
  • 我真的不明白,你能在这个jsfiddle.net/tQeCv上做demo吗?
【解决方案2】:

尝试一些简单的开始,比如理解 split() 等。

这里有一些东西:

var data = $(".xxx").text(),
    numbs = data.split('{')[1].split('}')[0].split('|'),
    words = data.split('{')[2].split('}')[0].split('|'),
    newdata = data.split('{')[0]+' '+numbs[Math.floor(Math.random()*numbs.length)];
    newdata += data.split('}')[1].split('{')[0]+' '+words[Math.floor(Math.random()*words.length)];

$(".yyy").html(newdata);

​

FIDDLE

然后继续用正则表达式替换。

编辑:

要使其更具动态性并使用更多占位符,您可以使用一些正则表达式来执行以下操作:

var data = $(".xxx").text(),
    placeholder = data.match(/{(.*?)}/gi);

$.each(placeholder, function(i,e) {
    var options = e.split('|'),
        randOpt = options[Math.floor(Math.random()*options.length)];
    data = data.replace(e, randOpt.replace(/({|})/g, ''));
});

$(".yyy").html(data);

FIDDLE

【讨论】:

  • 一件事......如果我必须随机所有内容?像这样...jsfiddle.net/tQeCv/9
  • @l2aelba - 请参阅我更新的答案以获取有关如何执行此操作的示例。
【解决方案3】:

你可以使用Math对象.random()方法:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Math/random

function randomNumber()  
{  
  num = Math.ceil(Math.random() * (1 - 4) + 4); 
  $(".yyy").text(num) 
}  

【讨论】:

  • 我只想把这个输入变成这样的输出:数字是3,四个
猜你喜欢
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
相关资源
最近更新 更多