随机引用Javascript随机引用

时间:2013-04-12 00:02:15

标签: javascript arrays random

我想在单击按钮时显示数组中的随机引用。问题是我的代码在加载页面时没有显示第一个随机引用。换句话说,这段代码有效但看到第一个引用我必须按下按钮。加载浏览器时如何才能获得第一个随机引用?谢谢!

<script language="javascript">
function quotes(){

var aquote = new Array;
aquote[0]="\"Quote 1.\"";
aquote[1]="\"Quote 2.\"";
aquote[2]="\"Quote 3.\""

rdmQuote = Math.floor(Math.random()*aquote.length);
document.getElementById("txtbox") .value=aquote[rdmQuote];
}

</script>

和HTML

<textarea id="txtbox" style="width:600px;" readonly></textarea>

<button onClick="quotes()">Click Here</button>

6 个答案:

答案 0 :(得分:0)

function quotes(){

    var aquote = new Array;
    aquote[0]="\"Quote 1.\"";
    aquote[1]="\"Quote 2.\"";
    aquote[2]="\"Quote 3.\""

    rdmQuote = Math.floor(Math.random()*aquote.length);
    document.getElementById("txtbox") .value=aquote[rdmQuote];
}

quotes(); // here call that function. just make sure the DOM is ready.

答案 1 :(得分:0)

在脚本标记中定义后调用函数quotes()。如果脚本标记显示在您尝试获取的DOM元素之后,那么您应该没问题。但是将它放在$(document).ready()块中会更安全。

答案 2 :(得分:0)

使用

window.onload = quotes;

在功能定义之后。

答案 3 :(得分:0)

<强> jsfiddle Demo

您可以调用quotes函数以获取第一个随机引用。但是,一旦函数可以访问dom元素,就应该这样做。因此,在尝试访问该元素之前,您将要等待dom呈现。您可以将onload事件附加到window然后将该调用函数quotes添加。{/ p>

function quotes(){

 var aquote = new Array;
 aquote[0]="\"Quote 1.\"";
 aquote[1]="\"Quote 2.\"";
 aquote[2]="\"Quote 3.\""

 rdmQuote = Math.floor(Math.random()*aquote.length);
 document.getElementById("txtbox") .value=aquote[rdmQuote];
}
window.onload=quotes;

答案 4 :(得分:0)

其他一些人建议将引号函数分配给onload或onready等事件处理程序。这并不总是有效,具体取决于其他脚本也可能正在使用这些事件处理程序,以及它们是否正常地重新定义事件处理程序或覆盖事件处理程序。

当我编写像你这样的代码,或回答像你这样的问题时,我不确定它将在什么环境中运行,我使用setTimeout或在定义了必要的textarea HTML之后放置的另一个脚本。

如果确保将整个脚本放在包含textarea的HTML之后,则可以使用gdoron的答案。

如果您不能使用事件处理程序,并且无法在使用它的HTML元素之后移动脚本元素,那么您可以将此行添加到您的代码中。在实践中它应该一直有效,但理论上它可能会失败:

setTimeout(quotes, 500);

在结束脚本标记之前添加该行,如果其他方法都不适合你,那么你应该好好去。

答案 5 :(得分:0)

// Create an array and assign your quote urls

var quotation = new Array();

quotation[0] = "paster your quote url";
quotation[1] = "paster your quote url";
quotation[2] = "paster your quote url";
quotation[3] = "paster your quote url";

var random = Math.floor(Math.random()*(quotation.length));
function printquote(){
document.write(quotation[random]);
}

<button onclick="printquote">Get quote</button>