2013-04-12 172 views
1

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

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

回答

0

jsfiddle Demo

可以调用quotes功能,以获得第一随机引用。但是,一旦函数可以访问dom元素,就应该这样做。因此,在尝试访问该元素之前,您将需要等待dom进行渲染。您可以通过将onload事件附加到window,然后使用该函数quotes来完成此操作。

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; 
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. 
0

调用函数引号()。如果脚本标记出现在您尝试获取的DOM元素之后,则应该没问题。但将它放在$(document).ready()块中会更安全。

0

使用

window.onload = quotes; 

函数定义之后。

+1

错。你的意思是window.onload =引号; –

+0

为什么是,谢谢你的注意。 –

0

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

当我编写诸如你的代码或回答类似你的问题时,我不确定它将运行的环境,我使用setTimeout或在必要的textarea HTML定义之后放置的另一个脚本。

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

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

setTimeout(quotes, 500); 

您结束脚本标签之前添加该行,你应该是好去,如果没有其他方法为你工作。

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>