如何将变量传递给函数和 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);
};