javascript - 使用 for 循环嵌入值

标签 javascript jquery loops

因为我有属性的增量值,所以我“遵循这个方法,正如你所看到的,我对我的属性进行了硬编码,但我想将它们嵌入到循环中..请告诉我如何做到这一点..我无法实现这一目标...谢谢.. 我从一个 json 文件中获取下拉列表中的值,其中有 20 个属性...当我从下拉列表中单击特定值时...与该值相关的属性显示在列表框中。 我的 HTML

form name="myform" id="myForm">

    <select id="dropdown1"></select>
     <select id="listbox"></select>
    <!--  <input type="checkbox">-->
    <br>

     (document).ready(function() {

    $.ajax({
        url: "data.json",
        dataType: "json",
        success: function(obj) {
            var jsObject = obj;
            var usedNames = [];

            $('<option>', {
                text: 'Select your Option',
                value: '',
                selected: 'selected',
                disabled: 'disabled'
            }).appendTo('#dropdown1');







            $.each(obj, function(key, value) {
                if (usedNames.indexOf(value.name) == -1) {
                    $("#dropdown1").append("<option value=" + key + ">" + value.name + "</option>");
                    usedNames.push(value.name);
                }
                /*  $('<option>', {
                    text: 'Select your Option',
                    value: '',
                    selected: 'selected',
                    disabled: 'disabled'
                }).appendTo('#dropdown1');
                */

                $.each(usedNames, function(index, value) {
                    $('<option>', {
                        text: value['name'],
                        value: index
                    }).appendTo('#dropdown1');
                });

            /*    $('<option>', {
                    text: 'Select your List Option',
                    value: '',
                    selected: 'selected',
                    disabled: 'disabled'
                }).appendTo('#listbox'); */



                $('#dropdown1').change(function() {
                    $('#listbox').empty();

                    $('<option>', {
                      text: 'Select your List Option',
                        value: '',
                        selected: 'selected',
                        disabled: 'disabled'
                    }).appendTo('#listbox');

                    var selection = $('#dropdown1 :selected').text();
                    var selection = $('#dropdown1 :selected').text();
                    $.each(jsObject, function(index, value) {
                        if (value['name'] === selection) {
                            var optionHtml = '';
                            for (var i = 1; i <= 20; i++) {
                                var attr = 'attr' + ('000' + i).substr(-3);
                                optionHtml += '<option value="' + attr + '">' + value[attr] + '</option>';
                            }
                            $('#listbox').append(optionHtml);
                        }
                    });
                });
            });
        }
    });
});

最佳答案

您可以使用 for 循环生成选项元素,因为所有属性都是增量的。试试这个:

var selection = $('#dropdown1 :selected').text();
$.each(jsObject, function(index, value) {
    if (value['name'] === selection) {
        var optionHtml = '';
        for (var i = 1; i <= 20; i++) {
             var attr = 'attr' + ('000' + i).substr(-3);
             optionHtml += '<option value="' + attr + '">' + value[attr] + '</option>';
        }
        $('#listbox').append(optionHtml);
    }
});

Working example

请注意,这还会将 HTML 构建为单个字符串,并将其附加到 DOM 一次以获得更好的性能。

关于javascript - 使用 for 循环嵌入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496599/

相关文章:

javascript - 以 Angular 将伪类添加到自定义模板/指令

javascript - C3 图表在 Bootstrap 网格布局中不可见

javascript - 比较具有 null 值和空字符串的 JS 对象

javascript - Handlebar js - JSON 对象中的第二个数组不会打印到表格上

javascript - jQuery clone() 每次附加 div 时将其加倍

c - 这个特定函数的时间复杂度\big(O) 是多少?

jquery - 寻找 jQuery 效果来逐渐显示隐藏的 DIV/图像

javascript - AngularJS ng-show 与 map 一起使用时不会触发

Java,Double 数据类型有问题,一直返回 1.00 而不是 1.8

Javascript检查字符串中的每个字符并返回相应位置的数组元素