Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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_Html_Json - Fatal编程技术网

Javascript从json填充选择选项

Javascript从json填充选择选项,javascript,html,json,Javascript,Html,Json,我对这个代码有问题。我必须加载json格式的数据(var data2)并填充select id=“SELEZIONAVERO”中的选项。选择项目取决于我在select name=“Tipo_sistema”中选择的内容。 似乎效果不太好,因为如果我更改第一个选择,在第二个选择中仍保留一些previus选项 提前谢谢 var数据2={ “西斯特米”:{ “等级等级”:{ “maxL”:110, “maxH”:270, “vetro”:[“Trasparente”、“Trasp satinato”

我对这个代码有问题。我必须加载json格式的数据(var data2)并填充select id=“SELEZIONAVERO”中的选项。选择项目取决于我在select name=“Tipo_sistema”中选择的内容。 似乎效果不太好,因为如果我更改第一个选择,在第二个选择中仍保留一些previus选项

提前谢谢

var数据2={
“西斯特米”:{
“等级等级”:{
“maxL”:110,
“maxH”:270,
“vetro”:[“Trasparente”、“Trasp satinato”、“Stampa Digital”]
},
“最低等级”:{
“maxL”:110,
“maxH”:270,
“vetro”:[“Trasparente”、“Trasp satinato”、“Extrachiaro”]
}
}
}
函数loadLista(){
var select=document.getElementById(“selezionaVetro”);
var opzioni=data2.sistemi[document.getElementsByName(“Tipo_sistema”)[0]。value]。vetro;
对于(var a=0;a

古典风
极小化软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖
选择一个数字

您应该按相反顺序删除前面的选项

for(让i=select.options.length-1;i>=0;i--){
选择.options[i].remove();
}
var数据2={
“西斯特米”:{
“等级等级”:{
“maxL”:110,
“maxH”:270,
“vetro”:[“Trasparente”、“Trasp satinato”、“Stampa Digital”]
},
“最低等级”:{
“maxL”:110,
“maxH”:270,
“vetro”:[“Trasparente”、“Trasp satinato”、“Extrachiaro”]
}
}
}
triggerEvent(document.querySelector('select[name=“Tipo_sistema”]”),'change');
函数loadLista(){
var select=document.getElementById('selezionaVetro');
var opzioni=data2['sistemi'][document.querySelector('select[name=“Tipo_sistema”]”).value].vetro;
for(让i=select.options.length-1;i>=0;i--){
选择.options[i].remove();
}
forEach(opzion=>select.appendChild(新选项(opzion,opzion));
}
函数triggerEvent(el、eventName){
var event=document.createEvent('HTMLEvents');
initEvent(eventName,true,false);
el.调度事件(事件);
}

古典风
极小化软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖软糖
选择一个数字

出于某种原因,For循环没有清除所有选项,但我能够通过while循环清除所有选项:

while (select.options.length > 0) {
  select.remove(0);
}
var data2 = {
  "sistemi": {
    "scorr_vel_class_": {
      "maxL": 110,
      "maxH": 270,
      "vetro": ["Trasparente", "Trasp satinato", "Stampa digitale"]
    },
    "scorr_vel_minimal_": {
      "maxL": 110,
      "maxH": 270,
      "vetro": ["Trasparente", "Trasp satinato", "Extrachiaro"]
    }
  }
}

function loadLista() {
  var select = document.getElementById("selezionaVetro");
  var opzioni = data2.sistemi[document.getElementsByName("Tipo_sistema")[0].value].vetro;

  while (select.options.length > 0) {
    select.remove(0);
  }

  for (var i = 0; i < opzioni.length; i++) {
    var opt = opzioni[i];
    var el = document.createElement("option");
    el.textContent = opt;
    el.value = opt;
    select.appendChild(el);
  }
}
以下是全部代码(唯一不同的是我更改了for循环,清除了while循环的选项:

while (select.options.length > 0) {
  select.remove(0);
}
var data2 = {
  "sistemi": {
    "scorr_vel_class_": {
      "maxL": 110,
      "maxH": 270,
      "vetro": ["Trasparente", "Trasp satinato", "Stampa digitale"]
    },
    "scorr_vel_minimal_": {
      "maxL": 110,
      "maxH": 270,
      "vetro": ["Trasparente", "Trasp satinato", "Extrachiaro"]
    }
  }
}

function loadLista() {
  var select = document.getElementById("selezionaVetro");
  var opzioni = data2.sistemi[document.getElementsByName("Tipo_sistema")[0].value].vetro;

  while (select.options.length > 0) {
    select.remove(0);
  }

  for (var i = 0; i < opzioni.length; i++) {
    var opt = opzioni[i];
    var el = document.createElement("option");
    el.textContent = opt;
    el.value = opt;
    select.appendChild(el);
  }
}
var数据2={
“西斯特米”:{
“等级等级”:{
“maxL”:110,
“maxH”:270,
“vetro”:[“Trasparente”、“Trasp satinato”、“Stampa Digital”]
},
“最低等级”:{
“maxL”:110,
“maxH”:270,
“vetro”:[“Trasparente”、“Trasp satinato”、“Extrachiaro”]
}
}
}
函数loadLista(){
var select=document.getElementById(“selezionaVetro”);
var opzioni=data2.sistemi[document.getElementsByName(“Tipo_sistema”)[0]。value]。vetro;
while(选择.options.length>0){
选择。删除(0);
}
对于(变量i=0;i

这篇文章归功于Rodrigo Longo:

为(var a=0;a每次删除项目时,长度都会减少1,因此您永远不会到达项目的末尾。基本上,您是在从当前正在迭代的数组中删除项目。您可以在此处找到一些解决方案:谢谢!工作非常好!