2015-05-15 42 views
0

我正面臨着變量範圍的一些問題。如果我們在一個js文件中定義,我們如何在另一個js文件中使用(我的意思是說,如果我們想在整個應用程序中使用一個變量)?我們能做到嗎?'節點'未定義。我們如何在應用程序級別定義?

示例:在我們的IE(IE-8和更低版本的IE)中,我們遇到了節點類型的問題。我們在如此多的JavaScript文件中使用常量示例:Node.ELEMENT_NODE 這給幾個瀏覽器帶來問題(「節點」未定義) 我們必須在所有文件中將此常量替換爲「1」。相反,在所有地方(這麼多的文件)替換如此,我們可以定義我們的出發HTML文件,如下

例中我們的出發HTML文件(即index.html的),我們可以在任何其他使用Node.ELEMENT_NODE JavaScript文件?它在以往我們使用Node.ELEMENT_NODE其他所有的JavaScript文件的影響:

<script type="text/javascript"> 
    if (!window.Node){ 
     Node = { 
      ELEMENT_NODE    : 1, 
      ATTRIBUTE_NODE    : 2, 
      TEXT_NODE     : 3, 
      CDATA_SECTION_NODE   : 4, 
      ENTITY_REFERENCE_NODE  : 5, 
      ENTITY_NODE     : 6, 
      PROCESSING_INSTRUCTION_NODE : 7, 
      COMMENT_NODE    : 8, 
      DOCUMENT_NODE    : 9, 
      DOCUMENT_TYPE_NODE   : 10, 
      DOCUMENT_FRAGMENT_NODE  : 11, 
      NOTATION_NODE    : 12 
     }; 
    } 
+0

如果你嘗試你的建議,它會產生一個錯誤? –

+0

它只在該文件(例如index.html)中工作。如果我在另一個文件(another.js)中使用相同的變量不應用此值。由於「節點」未定義,我收到錯誤消息。只需要在一個文件中聲明並希望在所有文件中使用。 – mallikgm

回答

1

創建,你把你的JavaScript代碼的文件。

// your-script.js 
if (!window.Node){ 
    Node = { 
     ELEMENT_NODE    : 1, 
     ATTRIBUTE_NODE    : 2, 
     TEXT_NODE     : 3, 
     CDATA_SECTION_NODE   : 4, 
     ENTITY_REFERENCE_NODE  : 5, 
     ENTITY_NODE     : 6, 
     PROCESSING_INSTRUCTION_NODE : 7, 
     COMMENT_NODE    : 8, 
     DOCUMENT_NODE    : 9, 
     DOCUMENT_TYPE_NODE   : 10, 
     DOCUMENT_FRAGMENT_NODE  : 11, 
     NOTATION_NODE    : 12}; 
    } 
} 

然後,添加您的網站的每個網頁上的這一行:

<script src="your-script.js"></script> 

最好是把此行只是</body>(結束標記)前。這將在加載完所有內容後執行JavaScript。 當然,你仍然可以把這條線放在你想要的地方。

注意:在這裏,該文件被稱爲「your-script.js」,但您可以根據需要命名該文件。

這將包括所有頁面中的代碼。它將隨處可用。


如果你仍然有這個解決的問題,等待所有的腳本來執行任何代碼之前加載:

window.onload = function() 
{ 
    // Javascript code goes here 
} 
+0

非常感謝您的建議。有沒有其他的方式沒有修改其他文件只是在單個文件中聲明,並應該反映在所有其他文件。 (如你建議添加在所有文件中:)。如果我們在一個文件中聲明它可以反映所有文件嗎? – mallikgm

+0

如果您使用的是模板系統,請將該行添加到您的模板中。 如果沒有,您必須手動添加此代碼才能讓代碼在每個頁面上工作,否則它將無法工作。 –

+0

實際上目前沒有模板。我試過你的建議(window.onload = function()...)。沒有運氣。謝謝。 – mallikgm

0

確保腳本是在每個頁面的頂部。忘記將它放在關閉主體標籤之前或放置在onload事件中。加載頁面時,使用簡單屬性創建簡單的Javascript對象不應引起顯着差異。

相關問題