我有一个Javascript对象,其格式分配给javascript变量:
var events =
[
{
"Id":20,
"CustomerId":9,
"CustomerName":"Mark Wikkins",
"Code":"CT6789",
"CustomerDate":"\/Date(1466679600000)\/",
"Levels":[
{
"Id":92,
"Nivel":0,
"Code1":"Sales",
"Code2":null,
"Description":"Customer",
},
{
"Id":94,
"Nivel":0,
"Code1":"Sales",
"Code2":null,
"Description":"Customer",
}
]
},
{
"Id":21,
"CustomerId":14,
"CustomerName":"John Stweart",
"Code":"CT70000",
"CustomerDate":"\/Date(146667970000)\/",
"Levels":[
{
"Id":102,
"Nivel":0,
"Code1":"Jobs",
"Code2":null,
"Description":"Customer",
},
{
"Id":106,
"Nivel":"0",
"Code1":"Commissions",
"Code2":null,
"Description":"Customer",
},
{
"Id":113,
"Nivel":0,
"Code1":"Organizations",
"Code2":null,
"Description":"Customer",
}
]
}
];
我有一个下拉列表,其中包含以下文字和值
<select name="customers_select" id="customers_select">
<option value="92">Sales</option>
<option value="106">Commisions</option>
<option value="113">Organizations</option>
</select>
如果我想从下拉列表中选择CustomerDate
,那么最好的方法是什么?
正如您可以看到select(下拉)映射到Level Id的值,但该级别是Javascript Object
中父对象的属性。
因此,如果我从下拉列表中选择"Commisions"
,我需要评估我的变量事件并获取第二个对象的CustomerDate。
是否可以通过从事件Javascript Object
数组中传递select的值来获取CustomerDate?
答案 0 :(得分:2)
有两种方法可以做到这一点。
循环遍历JavaScript对象并将Level_ids映射到CustomerDates,如下所示:
var hash = {};
hash["level-102"] = "\/Date(146667970000)\/";
hash["level-106"] = "\/Date(146667970000)\/";
hash["level-113"] = "\/Date(146667970000)\/";
... and so on
你可以通过使用jQuery的.each()
函数遍历你的对象来做到这一点(并且你需要在其中使用另一个来遍历Level对象)。
在JavaScript select事件中,您可以获取id并创建一个字符串"level-" + id
并在哈希表中查找:var customerDate = hash["level-" + id];
保持JavaScript对象的原样,当用户从下拉列表中选择时,它会触发一个遍历复杂对象的事件处理程序,以查找level_id。在这样做时,它记住了当前的&#34; CustomerDate&#34;所以当找到它时,你会突破搜索循环。