Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自json的填充下拉数据问题_Javascript_Jquery_Html_Json_Drop Down Menu - Fatal编程技术网

Javascript 来自json的填充下拉数据问题

Javascript 来自json的填充下拉数据问题,javascript,jquery,html,json,drop-down-menu,Javascript,Jquery,Html,Json,Drop Down Menu,我成功地从json收集数据并将其嵌入我的下拉列表中,但是,有时数据没有加载到我的下拉列表中。它会附加到另一个下拉列表中,即相同的类、相同的数据、不同的id。当我多次快速单击“添加行”按钮时,将使用下拉列表添加行,数据将不会被填充。它显示空下拉列表 function getEprIdList() { var url, listData; url = 'http://localhost:41251/api/GetEpridList'; $.getJSON(url, function (data)

我成功地从json收集数据并将其嵌入我的下拉列表中,但是,有时数据没有加载到我的下拉列表中。它会附加到另一个下拉列表中,即相同的类、相同的数据、不同的id。当我多次快速单击“添加行”按钮时,将使用下拉列表添加行,数据将不会被填充。它显示空下拉列表

function getEprIdList() {
var url, listData;
url = 'http://localhost:41251/api/GetEpridList';

$.getJSON(url, function (data) {
    $(data).each(function () {

        //prolist is the td that contain the dropdown
        $("#ProList" + countE).empty();
        countE = 0;
        option = $("<option></option>");
        option.val(this.epridName);
        option.append(this.epridName);

        //This to set which Project
        //.pro is class of the select dropdown
        $('.pro').each(function () {
            parentName = $(this).closest('table').attr('id');
            var parent = $(this).closest('table');

            $(data).each(function () {
                $("#ProList" + countE, parent).append(option);
                countE++;
            })
        });
    });
    return false;
});
}
谁能告诉我我在这个代码中做错了什么?谢谢

*下拉列表存在于动态表中,如果我们添加行,那么我们将使用下拉列表添加新行。服务器具有动态id

*我在代码中添加了包含下拉列表的行

function addtask(element) {

    var name = $(element).closest('tbody').attr('id');
    var tb = document.getElementById(name);

    var tr = document.createElement('tr');
    tr.setAttribute("id", "Task1");
    tr.setAttribute("class", "val");
    tb.appendChild(tr);

    // Add item in Task Row
    var cell = tr.insertCell(0);
    cell.innerHTML = "<select id=\"taskDdown" + taskCnt + "\" class=\"task\" name=\"taskName\"><option value=\"\" disabled selected hidden>Select Activity</option></select>" +
    "<span style=\"color:#333333;\" class=\"icon-grommet-trash icon\" onclick=\"deletetask(this)\"/>";

    //Array for Days
    var day = ['null', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'ToT'];

    for (i = 1; i < 8; i++) {
        var cell = tr.insertCell(i);
        for (d = 1; d < day.length; d++) {
            var dt = day[i];
            cell.innerHTML = "<input type=\"text\" name=\"" + dt + "\" onkeypress=\"return event.charCode >= 48 && event.charCode <= 57\" class=\"a hour focus\" onchange=\"deci(this)\" value=\"0.00\">";
        }
    }
    var c9 = tr.insertCell(8);
    c9.setAttribute("class", "tot");
    c9.setAttribute("name", "taskTotHour");
    c9.innerHTML = "0.00";

    $(".focus").on("click", function () {
        $(this).select();
    });

    getTaskList();
}

这样做的目的是添加一行,并在其旁边添加相关的下拉列表。这里的示例创建行和相应的下拉列表,然后将其附加到表中。您可以在tr上展开,根据需要选择属性这只是骨架结构

函数addRow{ 变量根https://jsonplaceholder.typicode.com/users'; $.ajax{ url:root, 方法:“获取” }.Then函数数据{ var select=$;//新选择 var tr=$//新行 //添加api中的所有选项 $.eachdata,functioni,item{ var option=$.valitem.email.textitem.email; $select.appendoption;//将选项附加到select元素 } $tr.appendselect;//将选择项追加到第行 $'abc.appendtr;//将新行追加到表中 }; }
这里的循环太多了。对于您的评论,逻辑并没有意义,但如果我不循环,那么如何从json获取数据并嵌入到下拉列表中呢?请帮助…您确实不需要循环数据两次,事实上,您会根据一个循环中有多少个“$”.pro”对其进行多次循环…关闭该循环,然后插入它们并在“$”.pro”中删除另一个循环。如果每行都有自己的下拉列表,那么代码将导致问题,插入错误的位置。如何在表中追加/创建新行,以及如何/何时调用getePridleList?非常感谢。愚蠢的我:你的代码非常棒,你刚刚救了我的命。非常感谢师父: