Javascript 循环遍历对象以填充 HTML 选择

标签 javascript jquery html drop-down-menu

我有这个 java 脚本代码:

var LANGS = {
    "C#": [10, "text/x-csharp"],
    "C/C++": [7, "text/x-c++src"],
    "Clojure": [2, "text/x-clojure"],
    "Java": [8, "text/x-java"],
    "Go": [6, "text/x-go"],
    "Plain JavaScript": [4, "text/javascript"],
    "PHP": [3, "text/x-php"],
    "Python": [0, "text/x-python"],
    "Ruby": [1, "text/x-ruby"],
    "Scala": [5, "text/x-scala"],
    "VB.NET": [9, "text/x-vb"],
    "Bash": [11, "text/x-bash"],
    "Objective-C": [12,"text/x-objectivec"],
    "MySQL": [13,"text/x-sql"],
    "Perl": [14, "text/x-perl"],
}

我现在有以下代码来显示该信息作为警报:

$('#langhelp').on('click', function () {
            var msg = "These are the languages and their langids: \n[LANGID]: [LANGUAGE]\n";
            var langs = [];
            for (var i in LANGS) {
                msg += LANGS[i][0] + ": " + i + "\n";
            }
            alert(msg);
        });

但我想做的是只用这些数据填充 HTML 选择我不知道该怎么做,我看过这个 question但看不到如何将选项附加到选择元素。

最佳答案

只需遍历列表并创建选项,然后将它们附加到选择元素。最后,将 select 附加到所需的容器中。

在我的示例中,我使用 $.fn.map遍历项目列表并创建 option 元素数组。这个数组(实际上它是类似 jQuery 数组的对象)然后作为 html 内容附加到新创建的 select 元素。

var LANGS = {
    "C#": [10, "text/x-csharp"],
    "C/C++": [7, "text/x-c++src"],
    "Clojure": [2, "text/x-clojure"],
    "Java": [8, "text/x-java"],
    "Go": [6, "text/x-go"],
    "Plain JavaScript": [4, "text/javascript"],
    "PHP": [3, "text/x-php"],
    "Python": [0, "text/x-python"],
    "Ruby": [1, "text/x-ruby"],
    "Scala": [5, "text/x-scala"],
    "VB.NET": [9, "text/x-vb"],
    "Bash": [11, "text/x-bash"],
    "Objective-C": [12,"text/x-objectivec"],
    "MySQL": [13,"text/x-sql"],
    "Perl": [14, "text/x-perl"],
};

var $select = $('<select>', {
    html: $.map(LANGS, function(value, key) {
        return '<option value="' + value[0] + '">' + key + '</option>';
    })
});

$select.appendTo('body');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于Javascript 循环遍历对象以填充 HTML 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086868/

相关文章:

html - 使用相对路径链接文件

javascript - 使用 Javascript 读取 session ID

javascript - 在 ng-repeat 之外检索 Angular ng-repeat 范围

javascript - 在 d3.js 中显示完整的笛卡尔平面

javascript - Jinja2 和 HTML Div 标签

jquery - 我的 .gif 动画在 google chrome 中不显示?任何想法为什么?

javascript - 在 Google Analytics 创建/更新其所有 cookie 后立即执行 Javascript 函数

jquery - 奇怪的 jQuery 问题

html - 将元素定位在可能滚动或不滚动的父元素的底部

javascript - 如何销毁即将到来脚本中的先前时间?