Javascript 使用变量访问对象元素时遇到问题

Javascript 使用变量访问对象元素时遇到问题,javascript,Javascript,我有一个从不同函数传递的变量“session”。 我不知道如何格式化它,以便我可以按如下方式使用它: passed to function - // session = 'coverType_1' ) var tag = session.substring(session.indexOf("_") + 1); document.write(dataBlock['coverType_'+tag]['coverage'][1]); 这显示为“未定义” 然而,作为比较,这是可行的: var

我有一个从不同函数传递的变量“session”。 我不知道如何格式化它,以便我可以按如下方式使用它:

passed to function  - // session  = 'coverType_1' )

var tag = session.substring(session.indexOf("_") + 1);

document.write(dataBlock['coverType_'+tag]['coverage'][1]);
这显示为“未定义”

然而,作为比较,这是可行的:

var i = 1;

document.write(dataBlock['coverType_'+i]['coverage'][1]);
如何格式化“会话”以用作此对象元素的变量

我假设“session”已经从另一个函数中丢失了它的作用域,因为它在前一个函数中工作


提前谢谢。这让我耽搁了大约一个星期。

您可能没有得到正确的
标记或
数据块

而不是执行
var tag=session.substring(session.indexOf(“”)+1),,
使用
split()
运算符:

var tag = session.split("_")[1];
接下来,我不确定您是否打算将
数据块
用作三维阵列,但如果确实使用了,请非常小心,因为您正在处理其中的大量数据。我建议首先使用
console.log(dataBlock['coverType\'+tag])
, 然后
console.log(数据块['coverType\'+tag]['coverType\'+tag])

以验证它是否具有所需的数据。如果没有,则提供数据块对象的“其他函数”被破坏。

代码不足。尝试使用JSFIDLE。在
文档之前执行
console.log(tag)
。编写
以查看您的
标记是否具有正确的值。如果这不正确,请尝试使用
会话
,可能您没有将其传递到范围。我们需要了解更多关于代码结构的信息,以便进行任何类型的诊断,否则您将得到“答案”,而这些答案实际上只是猜测问题所在。有关更多信息,请参阅。非常感谢您对我的模糊问题的回答。我能够解决我的问题,正如你所建议的,阵列被破坏了。