2011-09-27 67 views
0

我有一個單獨的.js文件類似這樣一些數據:無法通過JavaScript訪問變量 - 範圍錯誤?

data = new Object(); 
data['cat'] = ['Mr. Whiskers','Wobbles']; 
data['dog'] = ['Toothy']; 
data['fish'] = ['goldy','roose']; 

function getStuff(info) 
{ 
    var stuff = data[info.value]; 
    return stuff; 
} 
與塊的其他的HTML文件

現在,我有這樣的事情:

function theDrop(dynamic) { 
    alert(getStuff(dynamic)); 
} 

盒子說:undefined,爲什麼?

+0

你的語法是無效的 - '警報(getStuff(動態));' – josh3736

+0

我意識到這一點,只是修復它。這只是我編寫的示例代碼,並不是我的實際代碼 - 這是針對一個班級的,我不應該直接分享它。它可以很好地提醒,但警報不確定,不應該如此。 – Naoto

+0

'theDrop'被調用的方式如何? – jondavidjohn

回答

3

你通過了什麼theDrop?如果你要撥打的.value那麼你需要傳遞整個對象了,否則你會得到undefined

Live Demo

var select = document.getElementById("selectme"); 

select.onchange = function(){ 
    theDrop(this); 
} 

data = new Object(); 
data['cat'] = ['Mr. Whiskers','Wobbles']; 
data['dog'] = ['Toothy']; 
data['fish'] = ['goldy','roose']; 

function getStuff(info) 
{ 
    var stuff = data[info.value]; 
    return stuff; 
} 

function theDrop(dynamic) { 
    alert(getStuff(dynamic)); 
} 
+0

事實證明,你從根本上說是正確的 - 我確實通過了價值而不是對象本身。警報dynamic.value得到我需要的。非常感謝! – Naoto

+0

沒問題,很高興有幫助。 – Loktar

+0

@Naoto如果這回答你的問題,你可以考慮接受這個答案。 – chuckj