如何将变量传递给函数并返回它们的一些属性javascript

时间:2015-04-01 15:53:44

标签: javascript jquery function drop-down-menu attributes

我有一个下拉菜单,当我选择一个元素时,我想查看有关此元素的信息列表。 下拉和选择工作,但由于我有很多选项(超过显示)我尝试创建一个函数,将返回所选元素的信息,所以我不重复我的代码。但我的功能给了我一个错误信息:"无法读取属性' 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);
    };
  });
}); 

感谢您的帮助!

3 个答案:

答案 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);
};