2011-12-27 46 views
1

我正在製作一個頁面,用戶可以回答有關他們銷售的產品的問題(使用單選按鈕)。當他們點擊頁面底部的按鈕時,會彈出價格報價。我寫了一個JavaScript函數,當用戶點擊按鈕時執行。它會計算價格並使用document.write顯示它,但每當用戶點擊按鈕時,它就會打開一個新頁面並顯示我告訴它的內容。Document.write問題

function getQuote(){ 
    document.write("Your Quote Is: $", price, ".00"); 
} 

這裏是按鈕的代碼:

<button type="button" onclick='getQuote()'>Display Quote</button> 

但是,當我按下按鈕,一個新頁面顯示出來,它顯示的報價只有我投入document.write短語格式。

我試過使用.innerHTML發送document.write到頁面的另一部分,但同樣的問題仍然存在。

我該怎麼做才能確保報價顯示在頁面上,我希望它在哪裏?

+1

如果在DOM構建完成後調用'document.write',它將清除整個e內容。我建議你創建一個http://jsfiddle.net/演示。 – 2011-12-27 19:20:02

+0

你是如何得到價格變數的?看起來價格不顯示也許是因爲它沒有正確定義。你有沒有試過firebugging它,並檢查JavaScript的錯誤? http://getfirebug.com/ – dangerChihuahua007 2011-12-27 19:21:05

+0

歡迎來到StackOverflow,馬修。準備將SO書籤放在Facebook,Gmail或Twitter上。 – 2011-12-27 19:29:15

回答

3

沒有問題與document.write,它是做什麼它應該做的事:

用新的內容覆蓋了網頁。

如果要做到這一點,那麼你必須給它一些情況下寫入。

例如:

function getQuote(){ 
    var textArea = document.getElementById('textArea'); 
    textArea.innerHTML = "Your Quote Is: $", price, ".00"; 
} 

後您的文檔已經被充分渲染和關閉,使用document.write()將清除當前文檔並開始這使無論你的文本到DOM元素與id="textArea"

+0

這工作得很好。謝謝。 – MattDavBen 2011-12-27 19:41:20

1

您應該引用該元素,並設置其內容而不是使用document.write

<button type="button" onclick='getQuote.call(this)'>Display Quote</button> 

function getQuote(){ 
    this.firstChild.data = "Your Quote Is: $" + price + ".00"; 
} 

如果你想要寫一個不同的元素,你應該選擇元素,並有可能使用相同的技術。

1

新的,消除所有以前的內容。

將內容放入現有文檔中需要使用DOM操作函數,而不是document.write()。如果,你正在做的是改變你的按鈕上的文字,你可以這樣做(假設price是一個全局變量包含價格):

<button type="button" onclick='getQuote(this)'>Display Quote</button> 

function getQuote(obj) { 
    obj.innerHTML = "Your Quote Is: $" + price + ".00"; 
} 

如果你想放價格到頁面上的其他一些物體,然後你給對象的ID,你可以得到該對象,並把價格定到這樣的:

<button type="button" onclick='getQuote()'>Display Quote</button> 
<div id="quotedPrice"></div> 

function getQuote() {        
    document.getElementById("quotedPrice").innerHTML = "Your Quote Is: $" + price + ".00";    
} 

您可以在這裏看到這些工作的兩個論壇:http://jsfiddle.net/jfriend00/ED5V9/

+0

感謝您的快速響應。這工作得很好。 – MattDavBen 2011-12-27 19:41:36