2012-11-12 59 views
0

如何在html和javascript中爲django模板頁面聲明全局變量。我想讓display_language成爲一個全局變量。如何在html和javascript中聲明全局變量

<script> 
    function onChange(){ 
    if (xmlHttp.readyState==4 && xmlHttp.status==200) { 
     //request is successful. So retrieve the values in the response 
     display_language = xmlHttp.responseText.split(';'); 
     alert("response: " + display_language); 
    } 
} 
</script> 

<html> 
    <body> 
    {% ifequal item.lang display_language %} 
      {{item.text.strip}} 
    {% endifequal %} 
    </body> 
</html> 
+0

'window.varname = '值',' – zerkms

+0

或'無功VARNAME = '值';'放在所有功能外將使全球JS變量,但沒有客戶端 - 方JS變量將可以從您的服務器端代碼訪問... – nnnnnn

+0

@nnnnnn:有一天你重構代碼,並沒有注意到。並且在將某些東西移動到某個函數之後 - 您將有快樂的調試時間:) – zerkms

回答

2

變量在JavaScript中隱含全球化的,除非它們是函數內使用var關鍵字爲前綴,他們將是全球可訪問

這是全球

<script type='text/javascript'> 
    foobar = 'hello'; 
</script> 

這也是全球性的

<script type='text/javascript'> 
    function test() { 
     foobar = 'hi'; 
    } 
</script> 

這是當地

function test() { 
    var foobar = 'world'; 
} 
+0

爲什麼不用'window.foobar'指定最不容易出錯的方法? – zerkms

+0

因爲我認爲全球變量的使用不應該被鼓勵,所以我真的不認爲我們需要學習更多的方法來做到這一點 – lostsource

+0

「因爲我認爲全球變量的使用不應該被鼓勵」 - 這是如何證明解決方案是正確的甚至不通過''使用嚴格的''?如果您將代碼移動到函數並獲得快速調試時間,我甚至不會提到它全是錯誤。對,全局變量是不好的。但是,對於不好的練習來說,提出不好的解決方案是不好的。 – zerkms