2013-04-12 155 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>