如何将变量传递给函数和 return 它们的一些属性 javascript
How to pass variables to a function and return some of their properties javascript
我有一个下拉菜单,当我 select 一个元素时,我想查看有关该元素的信息列表。
下拉菜单和 selection 可以工作,但由于我有很多选项(不仅仅是显示),我尝试创建一个函数来 return 元素的信息 selected 所以我不'重复我的代码。但是我的函数给我一条错误消息:"Cannot read property 'top_1' of undefined" 但是 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);
};
});
});
感谢您的帮助!
不确定,但试试看:
function ing(element1, element2){
console.log( element1[top_1] +" "+
element1[top_2] +" "+element1[element2][top_1]+
" "+ element1[element2][top_2] );
};
我很难理解到底发生了什么以及应该在你的代码中发生什么 - 如果你可以创建一个 JS fiddle 或详细说明一下关于你的问题,那就太好了。
无论如何,ing
函数中存在一个明显的问题 - 您正在尝试读取 element1 上的 属性 element2
,但没有这样的 属性!你应该写 element1[element2].top1。但其余的取决于变量 top_1
...
的内容到底是什么
您可以将 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);
};
我有一个下拉菜单,当我 select 一个元素时,我想查看有关该元素的信息列表。 下拉菜单和 selection 可以工作,但由于我有很多选项(不仅仅是显示),我尝试创建一个函数来 return 元素的信息 selected 所以我不'重复我的代码。但是我的函数给我一条错误消息:"Cannot read property 'top_1' of undefined" 但是 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);
};
});
});
感谢您的帮助!
不确定,但试试看:
function ing(element1, element2){
console.log( element1[top_1] +" "+
element1[top_2] +" "+element1[element2][top_1]+
" "+ element1[element2][top_2] );
};
我很难理解到底发生了什么以及应该在你的代码中发生什么 - 如果你可以创建一个 JS fiddle 或详细说明一下关于你的问题,那就太好了。
无论如何,ing
函数中存在一个明显的问题 - 您正在尝试读取 element1 上的 属性 element2
,但没有这样的 属性!你应该写 element1[element2].top1。但其余的取决于变量 top_1
...
您可以将 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);
};