2012-06-18 148 views
1

我目前在学习Javascript,我想创建自己的Lorem Ipsum生成器。从列表中选择随机段落

基本上,我将有段落的列表(在JavaScript中,或在HTML文档?)。

当用户按下生成按钮,它会接着输出从列表中3个随机段落。

我环顾四周,在这里,但真的不能找到任何帮助。

感谢

+0

您是否试过在Google上环顾四周? – jeschafe

+1

你有任何代码吗? [你有什么尝试?](http://whathaveyoutried.com) – sczizzo

+0

我曾经在伟大的谷歌环顾四周,但我设法提出的一个简单的打印声明,当我点击按钮(部分W3C教程) – tristanojbacon

回答

2

你可以简单地有一个JavaScript数组,并选择一个随机指数和注入的那款到DOM元素。我还更新了代码,不要按照您的评论重复以前的随机整数。

实施例(代码未测试)

//global to store previous random int 
_oldInt = null; 

var paragraphArray = ["Lorem ipsum delor...", "The great white...", "Chitty-chitty-bang-bang..."]; 

//update element content (e.g. `<div>` with paragraph) 
document.getElementById("MyID").innerHTML = pickRandom(paragraphArray); 

var pickRandom = function(paragraphArray){ 
    //random index of paragraphArray 
    var randomInt = Math.floor(Math.random()*paragraphArray.length); 
    //ensure random integer isn't the same as last 
    if(randomInt == _oldInt) 
     pickRandom(paragraphArray); 
    else{ 
     _oldInt = randomInt; 
     return paragraphArray[randomInt]; 
    } 
} 
+0

非常好,非常感谢!但是,显然,您在innerHTML和(randomParagraph)之间错过了等号。一旦我补充说,它的工作。感谢您在正确的方向推动:) – tristanojbacon

+0

非常欢迎您。我已经编辑这个帖子w /你的输入thx。 – pixelbobby

+0

关于你的编辑 - 脚本无论前面提到的randomParagraph是否有括号都适用。这是正常的吗? – tristanojbacon

1

可以使用Math.random到从列表中产生一个随机指数:

var paragraphs = [...]; # This is your list of paragraphs 

function get_random_paragraph() { 
    var index = Math.floor(paragraphs.length * Math.random()); 
    return paragraphs[index]; 
}; 

表达Math.floor(MAX_VALUE * Math.random())产生一个随机整数x,其中0 <= x < MAX_VALUE

1

你需要一些paragraphs(在这里,一个JavaScript阵列),result盒(在这里,一个<div>)和button(这里是... <button>)。

当您单击button时,您想要将paragraphs添加到result中。

var paragraphs = ['Lorem', 'ipsum', 'dolor', 'sit', 'amet'], 
    nbParagraphs = paragraphs.length 
    paragraph = null, 
    result = document.getElementById('result'), 
    button = document.getElementsByTagName('button')[0]; 

button.addEventListener('click', function() { 
    /* 
    * Math.random() return a number between 0 and 1 
    * parseInt() return an integer (the 10 is here to say that we are in decimal) 
    * parseInt(Math.random() * nbParagraphs, 10) return a number between 0 and the number of paragraphs, so we can use it to select a paragraph in the paragraphs array 
    */ 
    paragraph = paragraphs[parseInt(Math.floor(Math.random() * nbParagraphs, 10))] 
    result.innerHTML += '<p>' + paragraph + '</p>' 
}) 

Here is a demo