Javascript 来自json的填充下拉数据问题
我成功地从json收集数据并将其嵌入我的下拉列表中,但是,有时数据没有加载到我的下拉列表中。它会附加到另一个下拉列表中,即相同的类、相同的数据、不同的id。当我多次快速单击“添加行”按钮时,将使用下拉列表添加行,数据将不会被填充。它显示空下拉列表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)
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?非常感谢。愚蠢的我:你的代码非常棒,你刚刚救了我的命。非常感谢师父: