Javascript JS函数未运行整个脚本
这部分是我的JSJavascript JS函数未运行整个脚本,javascript,Javascript,这部分是我的JS var records=response.split('|'); for (i=1; i<records.length; i++) { var record=records[i].split('*'); var region=record[0]; var regionid=record[1]; var x=document.createElement('option'); x.text=region; list.opt
var records=response.split('|');
for (i=1; i<records.length; i++) {
var record=records[i].split('*');
var region=record[0];
var regionid=record[1];
var x=document.createElement('option');
x.text=region;
list.options.add(x);
}
当它到达for循环时,它从不在{}之间运行东西
记录是
0: "<option value='Bobs Dock'>Bobs Dock</option><option value='Johns Dock'>Johns Dock</option><option value='Mikes Dock'>Mikes Dock</option>"
length: 1
回应是
"<option value='Bobs Dock'>Bobs Dock</option><option value='Johns Dock'>Johns Dock</option><option value='Mikes Dock'>Mikes Dock</option>"
那么为什么它不运行{}之间的项呢
编辑********
当更改为0使其运行时,它现在将使drop box选项显示
<option>
"<option value='Bobs Dock'>Bobs Dock</option><option value='Johns Dock'>Johns Dock</option><option value='Mikes Dock'>Mikes Dock</option>"
</option>
相反,它应该做的是将每个选项分解为下拉框中自己的选项 分割函数返回的数组大小为1,因为它没有在字符串中找到管道“|”。同时,Javascript数组索引是基于零的,因此第一个也是唯一一个项目是记录[0]。由于i=1,循环仅在第二条或更高记录上开始循环;初始化器,它从不运行,因为正如上面的答案所解释的,循环中有一个bug。对于i,从0开始,但这个答案主要集中在剩下的部分 对同一问题的看法略有不同。我没有使用正则表达式或其他分隔符进行拆分,而是将其设置为适当的HTML,然后将选项作为HTMLCollection获取 JSFiddle-
您的代码似乎是为完全不同的响应格式而设计的,例如
Bobs Doc*1|Johns Dock*2|Mikes Dock*3
但是您的实际响应只是选项的HTML,因此您不需要在自己的循环中构造HTML。您只需将其添加到的HTML中:
否记录的值。长度为1这是问题所在;1等于1,不小于1。你的循环永远不会执行。您可能希望将i设置为0,否则循环将不会运行,因为i=1永远不小于1。。。。你应该从i=0开始尝试改变它,但我的投递箱现在只显示[代码]Bobs Dock约翰Dock mikes Dock[/code]你所说的让我重新思考。为什么不提供我需要的值,用|分开,所以虽然我没有走这条路线,因为我能够改变我需要的响应,但这种方式确实有效。
var regex = /(?<=value=['"])[^'"]*/g;
var arrayOfValues = response.match(regex);
// arrayOfValues = ['Bobs Dock', 'Johns Dock', 'Mikes Dock']
var response = "<option value='Bobs Dock'>Bobs Dock</option><option value='Johns Dock'>Johns Dock</option><option value='Mikes Dock'>Mikes Dock</option><option value='Mayur Dock'>Mayur Dock</option><option value='Foo Dock'>Foo Dock</option>"
parser = new DOMParser();
doc = parser.parseFromString("<select>" + response + "</select>", "text/html");
var options = doc.getElementsByTagName("option");
for(i=0; i<options.length; i++){
var x=document.createElement('option');
x.text = options[i].text;
x.value= options[i].value
document.getElementById("list").append(x);
}
Bobs Doc*1|Johns Dock*2|Mikes Dock*3
list.innerHTML += response;