所以我已经尝试了一段时间但到目前为止没有运气。我想要实现的是,在从下拉列表中选择一个值之后,该值应该与json多维数组进行比较。如果匹配,则网页上有某些html元素,其内容需要用相应的json值替换。
这是我到目前为止所做的工作(link)
<select onchange="executeMe(this)" id="selectOpt">
<option value="445">Choose...</option>
<option value="445">Daisy</option>
<option value="446">Romeo</option>
</select>
<br/><br/><br/>
<label id="entity_id">replaceThis</label>
所以在小提琴中,如果用户从下拉列表中选择“Daisy”,(第一个数组中包含Daisy),则应在网页的每个html元素中显示数组中相应的值集。
我只能使用javascript。先谢谢你们......
答案 0 :(得分:0)
你遇到了问题。首先,您从map函数返回的字符串很大,当然不会通过您的选项值进行相等性检查。此外,您的匿名函数将返回第一个值,而不是正确地遍历您的for
循环。您的选择选项值/标签与数组中的项目之间没有相关性。试试这个:
function executeMe(select) {
var myselect = document.getElementById("selectOpt");
var selectOption = myselect.options[myselect.selectedIndex].innerHTML;
var i = theArray.length, obj, index, val;
while (i--) {
obj = theArray[i];
for (index in obj) {
val = obj[index];
//following matches on both keys and values, if you only
//want values delete the second part of the check
if (val == selectOption || index == selectOption) {
var string = '', prop;
for (prop in obj) {
string += prop + ': ' + obj[prop].toString() + '<br>';
}
document.getElementById('entity_id').innerHTML = string;
}
}
}
}
如果这不是您所需要的,请通过评论告诉我。