2011-07-26 49 views
0
<script> 
var word = new Array(); word[1] = 'new'; word[2] = 'old'; 
</script> 

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

而且,在validator.js我們:如何通過對多種功能的全局變量在多個文件

function validate(number){ 
    alert(word[number]); 
} 

如何捕捉變量值? 我總是得到一個錯誤,說變量不存在。

+3

也許不是一個好主意,因爲警報已經存在命名功能警報。你的alert函數中的'alert'應該是遞歸的還是應該調用內置的'alert'? –

+0

我不認爲你的alert函數是遞歸的...除此之外,你的代碼應該可以正常工作。 –

+1

1)你重寫'alert'函數。 2)一個數組從0開始。 – pimvdb

回答

1

你幾乎明白了。

這是我管理我的多語言信息的方式:

首先我定義在頁面頂部的陣列;儘可能靠近HEAD標記

<script type="text/javascript"> 
    var resx = {}; 
</script> 

然後,我用值填充數組,使用任何方法從數據庫中獲取它。在這個例子中,我使用ASP.NET MVC。

<script type="text/javascript"> 
    resx["word1"] = '@Model.word1';  
    resx["word2"] = '@Model.word2';  
    //or you can fill it directly 
    resx["word3"] = 'Name'; 
    resx["word4"] = 'Nombre'; 
</script> 
<script src="javascript/validator.js" type="text/javascript"></script> 

然後你用你的js文件所希望的方式:

validate(「word2」); 
function validate(value){ 
    alert(resx[value]); 
} 

//Or: 
alert(resx[「word3」]); 

我希望這幫助。

+0

它工作得很好!!!太多了! –

+0

樂於幫助! – epaulk

0

首先,跨文件引用全局可能不是一個好主意。對於其他團隊成員或維護人員來說,這可能會令人困惑。我建議總是將所有必要的值傳遞給一個函數。這個文檔正是這個功能所要求的。試試這個,

<script src="javascript/validator.js" type="text/javascript"></script> 
<script type="text/javascript"> 
var word = new Array('new', 'old'); 
validate(word, 0); 
</script> 

而且在validator.js

function validate(w, n){ 
    alert(w[n]); 
}