将HTML元素与JSON数组进行比较并替换

时间:2014-10-30 19:51:10

标签: javascript arrays json multidimensional-array

所以我已经尝试了一段时间但到目前为止没有运气。我想要实现的是,在从下拉列表中选择一个值之后,该值应该与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。先谢谢你们......

1 个答案:

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

如果这不是您所需要的,请通过评论告诉我。