无法通过JavaScript访问变量 - 范围错误?

问题描述:

我有一个单独的.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

你通过了什么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