我标记了第三个 console.log - “console.log(elements[i])”。在这一点上,elements[i] 是未定义的,但在此之前它的行为符合预期。任何想法如何/为什么会发生这种情况?function get_all_tasks_within_div(div_id) { var options = [] var checked_options = [] var elements = document.getElementById(div_id).querySelectorAll('*'); for (i = 0; i < elements.length; i++) { if (elements[i].getAttribute("name") == "task") { options.push(elements[i].value) if (elements[i].checked == true) { checked_options.push(elements[i].value) } } } return [options, checked_options]}function create_exhibits_list(deliverable_id) { exhibits[deliverable_id] = [] var elements = document.getElementsByName("exhibit") //get all exibits and sort for (i = 0; i < elements.length; i++) { try { console.log(elements[i]) var element_id = elements[i].id; var exhibit_number = document.getElementById(element_id + "exhibit_number").value; var exhibit_name = document.getElementById(element_id + "exhibit_name").value; var responsible_party = document.getElementById(element_id + "responsible_party").value; var deliverable_type = document.getElementById(element_id + "type").value; var deliverable_type_options = Array.apply(null, document.getElementById(element_id + "type").options).map(function(el) { return el.value; }); var responsible_party_options = Array.apply(null, document.getElementById(element_id + "responsible_party").options).map(function(el) { return el.value; });
1 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
您可以使用全局变量i
的两种功能,所以for
回路中get_all_tasks_within_div()
变化的变量i
中create_exhibits_list()
。所以当你使用elements[i]
调用该函数后,i
已经变成了elements
数组中不存在的索引。
你应该总是把变量定义成与本地var
或let
除非您特别需要使用全局变量。
添加回答
举报
0/150
提交
取消