Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 未捕获的TypeError:无法读取选择框中未定义的属性“0”_Javascript_Jquery - Fatal编程技术网

Javascript 未捕获的TypeError:无法读取选择框中未定义的属性“0”

Javascript 未捕获的TypeError:无法读取选择框中未定义的属性“0”,javascript,jquery,Javascript,Jquery,我不明白为什么我会出错,但最终的结果实际上是我想要的。以下是我的功能: function populate(){ for(var i = 0; i < locations.length; i += 1){ var select = document.getElementById("end"); select.options[select.options.length] = new Option(buildings[i][0], buildings[i

我不明白为什么我会出错,但最终的结果实际上是我想要的。以下是我的功能:

function populate(){
    for(var i = 0; i < locations.length; i += 1){
        var select = document.getElementById("end");
        select.options[select.options.length] = new Option(buildings[i][0], buildings[i][3]);
    }
};
并填充此加载:

<body onload="populate();">
<select class="form-control" id="end" onchange="calcRoute();">
                    <option disabled selected> -- Select a Destination -- </option>
                </select>
我不知道为什么它会在Chromes控制台中抛出错误,但仍然可以正常工作。

可能您的I变量刚刚超出了建筑物的长度。例如,如果您有20个位置和15栋建筑,当浏览器评估new Optionbuildings[15][0],buildings[15][3]时,它会抛出此错误

编辑:更具体地说,假设我们有15座建筑,我们的数组将有从0到14的索引,因此建筑[15]是未定义的。这就是错误的来源,您试图读取建筑物[15][0],这就像读取未定义的[0]

为了获得更好的响应,您也应该发布locations变量

var建筑物=[ [Allied Health'、'buildings'、'35.206815、-101.908493',2、,http://www.actx.edu/staff/images/icons/ac.png], [A栋],[35.206718,-101.906127',3,http://www.actx.edu/staff/images/icons/ac.png], [B栋”,“B栋”,“35.207614,-101.907383”,4,http://www.actx.edu/staff/images/icons/ac.png], [C栋],[35.207545,-101.905702',5,http://www.actx.edu/staff/images/icons/ac.png], [D栋','栋','35.207408,-101.906485',6,http://www.actx.edu/staff/images/icons/ac.png], [‘儿童发展中心’、‘建筑物’、‘35.207409、-101.908901’、7、,http://www.actx.edu/staff/images/icons/ac.png], 体操/舞蹈、建筑、35.207264、-101.909682、8、,http://www.actx.edu/staff/images/icons/ac.png], [Jones Hall','buildings','35.207514,-101.908236',9,http://www.actx.edu/staff/images/icons/ac.png], [‘演讲厅’、‘建筑物’、‘35.206754、-101.907246’、10、,http://www.actx.edu/staff/images/icons/ac.png], ['N.W.图书馆','buildings','35.206543,-101.904580',11,http://www.actx.edu/staff/images/icons/ac.png], [三角洲大厦','大厦','35.208272,-101.905817',12,http://www.actx.edu/staff/images/icons/ac.png] ]; 变量位置=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; 函数填充{ forvar i=0;i天哪,我是个白痴。您认为位置长度是问题所在,这是正确的。位置数组是一个单独的数组,我没有更改它。哑巴。但你指对了。谢谢
<body onload="populate();">
<select class="form-control" id="end" onchange="calcRoute();">
                    <option disabled selected> -- Select a Destination -- </option>
                </select>
select.options[select.options.length] = new Option(buildings[i][0], buildings[i][3]);