2013-05-21 175 views
1

遇到了一個問題 - 我想包括在郵件,用戶可以轉發給朋友們的身體一個js變量,使用如下:JS變量沒有更新

<head> 
<script src="javascript.js" type="text/javascript"> 
</script> 

<body>  
<script type="text/javascript"> 
    document.write('<a href="mailto:?subject=Subject&body=Bodytext' +total+ '">Mail me</a>');</script> 
</body> 

的var total是在.js文件中定義的,它的值可以通過執行附加到表單的af函數來操作。

即使執行該功能並且頁面顯示更改後,打開的郵件將始終顯示var total的默認值,而不是操作。

基本上我的問題是:如何獲取修改後的var total在mailto-link中顯示,而不是默認的var total。

聲明:我不是很聰明(至少在編碼方面)。

Bonus-info:我已經可以使用FB.init等與Facebook分享var的總數,它完美地顯示了操作的var。

編輯:

JS(切有點短):

var total = 'empty'; 

function getCalculation() { 
total = (parseInt(f1) + parseInt(f2)).toFixed(0); 
document.contactForm.formTotal.value = total; 
} 
+0

請在這裏複製「javascript.js」的相應部分。 –

回答

3

生成的頁面時,文件撰寫只運行一次。這不是一個動態代碼,每次改變時都會被觸發。你需要一個不同的方法。

而不是document.write,只需使用javascript作爲href的正常html鏈接(a-element),將文檔url更改爲mailto鏈接。

例如:

<a href="javascript:location.href='mailto:[email protected]?subject=Subject&body=Bodytext' + total">Mail Me</a> 

這意味着鏈接被點擊的時候,而不是去一個URL,我們執行一段JavaScript改變文檔的位置到的mailto鏈接,然後纔將總變量的值嵌入到體內。

更好的方法是創建一個你觸發,當該鏈接被點擊的外部函數:

<script type="text/javascript"> 
    function sendMail() { 
     var email = '[email protected]'; 
     var subject = 'My subject'; 
     var body = 'This is the total: ' + total; 
     location.href = 'mailto:' + email 
      + '?subject=' + encodeURIComponent(subject) 
      + '&body=' + encodeURIComponent(body); 
    } 
</script> 

然後在鏈接添加以下HREF:

<a href="javascript:sendMail()">Mail Me</a> 

現在total變量會在每次鏈接被點擊時嵌入到電子郵件正文中,而不是在頁面加載時嵌入。

encodeURIComponent確保主題和正文編碼正確,以便所有特殊字符和空格等在郵件客戶端中正確轉換。

我希望有幫助!

+0

完美!謝謝一堆! – dblaursen