Javascript 循环对象并根据选项选择将值显示到列表中

Javascript 循环对象并根据选项选择将值显示到列表中,javascript,jquery,html,if-statement,for-loop,Javascript,Jquery,Html,If Statement,For Loop,我有一个构造函数,并创建了它的一些实例,我把它们放在一个数组中。我试图做的是根据我从选项列表中选择的内容,将所述对象的值显示到空列表中。以下是我迄今为止所做的工作: <ul id="contactinfo"></ul> <select id="dropdown"> <option value="email">Email</option> <option value="number">Phone Number

我有一个构造函数,并创建了它的一些实例,我把它们放在一个数组中。我试图做的是根据我从选项列表中选择的内容,将所述对象的值显示到空列表中。以下是我迄今为止所做的工作:

<ul id="contactinfo"></ul>

<select id="dropdown">
    <option value="email">Email</option>
    <option value="number">Phone Number</option>
</select>
功能联系人列表名称、电子邮件、号码{ this.name=名称; this.email=电子邮件; 这个数字=数字; } var christian=新联系人列表'christian','christian@yahoo.com', '323-555-124'; var contactarray=[christian]; 函数显示信息{ var dropdown=$'dropdown'.val; var number=$'dropdown'.val'number'; var email=$'dropdown'.val'email'; 对于i=0;i首先,请注意,当前代码的主要问题是$'dropdown'.val、$'dropdown'.val'number'和$'dropdown'.val'email'都返回相同的内容—jQuery对象中的下拉列表。还要注意的是,后两者也将值设置为提供的值,因此JS总是只检索电子邮件,因为这是最后设置的

要修复它,您可以获取下拉列表中选择的值,并直接从contactarray元素检索该属性。试试这个:

function displayinfo () {
    var $contacts = $('#contactinfo').empty();
    for (i = 0; i < contactarray.length; i++) {
        $contacts.append('<li>' + contactarray[i][$('#dropdown').val()] + '</li>');
    }
}
最后,您还需要在更改select中的选项时执行displayinfo,并清除以前附加的li。查看下面的小提琴,了解完整的工作示例:


因此,您希望根据下拉列表中选择的内容显示来自对象的信息吗?联系人应该是contactinfo吗?是的,很抱歉,这是一个错误,编辑了。你可以包含联系人列表的代码吗?给你,编辑了。感谢你指出,我可以看到下拉变量的错误所在,那么选择选项值的正确语法是什么?如果你想设置所选选项,使用.val'email',要获取值,请使用.val。更多信息:好的,还有contactarray[i][$'dropdown'.val]是如何从对象中获取特定值的,是因为选项值与属性具有相同的名称吗?很抱歉提出了所有的问题,我只是想理解它正在使用括号表示法访问contactarray[i]中包含的对象。它相当于contactarray[i]。例如,电子邮件假设在下拉列表中选择了“电子邮件”。如果选项值与ContactList对象的属性名称不同,则需要像原始代码一样使用if语句。