-2
<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}、{1|2|3|4}

そして、この出力のようにランダムです:

数は 3 と 4

どうすればいいのかわからない...ごめんなさい:(

4

3 に答える 3

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];

等々....

于 2012-05-06T13:42:02.300 に答える
1

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);

​

フィドル

次に、正規表現への置換に進みます。

編集:

より動的にし、より多くのプレースホルダーを操作するには、正規表現を少し使用して次のようにすることができます。

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);

フィドル </p>

于 2012-05-06T14:02:35.113 に答える
0

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) 
}  
于 2012-05-06T13:38:40.047 に答える