我有一个下拉菜单,当我选择一个元素时,我想查看有关此元素的信息列表。 下拉和选择工作,但由于我有很多选项(超过显示)我尝试创建一个函数,将返回所选元素的信息,所以我不重复我的代码。但我的功能给了我一个错误信息:"无法读取属性' top_1'未定义"但是console.log(obj.top_1)运行正常。
var obj = {
top_1 :"bla",
top_2 :"bla bla",
objDetail_1 :{ top_1 :"bli",
top_2 :"bli bli",
name1:"AAA",
name2:"AAAA"
},
objDetail_2 :{ top_1 :"blo",
top_2 :"bli blo",
name1:"BBB",
name2:"BBBBB"
}
};
$(document).ready(function() {
$('.myStuff li ul li').click( function(event){
$(document).find('#description').css('visibility', 'visible');
var idElement = $(this).attr('id');
if (idElement == 'top_1'){
console.log(obj.top_1);
ing(obj, top_1);
};
function ing(element1, element2){
console.log(element1.top_1 +" "+ element1.top_2 +" "+element1.element2.top_1+" "+ element1.element2.top_2);
};
});
});
感谢您的帮助!
答案 0 :(得分:0)
不确定,但请尝试这样:
function ing(element1, element2){
console.log( element1[top_1] +" "+
element1[top_2] +" "+element1[element2][top_1]+
" "+ element1[element2][top_2] );
};
答案 1 :(得分:0)
我很难理解究竟发生了什么以及应该在您的代码中发生什么 - 如果您可以创建一个JS小提琴或者对您的问题进行详细说明,那就太棒了。
无论如何,ing
函数中存在一个明显的问题 - 您正在尝试读取element1上的属性element2
并且没有这样的属性!你应该写element1 [element2] .top1。但其余的取决于变量top_1
...
答案 2 :(得分:0)
您可以将element2
作为字符串传递,并将其替换为objDetail_1
,如下所示:
ing(obj, "objDetail_1");
然后在函数体中访问如下属性:
function ing(element1, element2){
console.log(element1.top_1, element1.top_2,
element1[element2].top_1, element1[element2].top_2);
};