Javascript JS DOM replaceChild第二次不工作

Javascript JS DOM replaceChild第二次不工作,javascript,dom,Javascript,Dom,我已经编写了一些非常基本的JS来隐藏、操作或更改标签标签中的一些文本,这些标签标签是某些div的子标签,这些div的特定名称由(较差的)CMS设置,以响应select元素的更改 显而易见的选择是使用DOM,但是一旦标签被更改,一旦不再更改,我就不知所措了。 这是JS: campi=["nome","avv_cat","ogg","dat_pub","dat_scad","scad_perm","ur","info","mod_pres","target"] for (i=0;i<ca

我已经编写了一些非常基本的JS来隐藏、操作或更改标签标签中的一些文本,这些标签标签是某些div的子标签,这些div的特定名称由(较差的)CMS设置,以响应select元素的更改

显而易见的选择是使用DOM,但是一旦标签被更改,一旦不再更改,我就不知所措了。 这是JS:

campi=["nome","avv_cat","ogg","dat_pub","dat_scad","scad_perm","ur","info","mod_pres","target"]
   for (i=0;i<campi.length;i++){
     document.getElementById("layer_".concat(campi[i])).style.display="block";
   }
   var sel= document.getElementById("avv_cat").value;
  switch (sel) {
    case "altr":
      ecc=[];
      camb=["mod_pres","target"];
      testi=["Modalità presentazione domanda:","A chi è rivolto?"];
      break;
    case "cimit":
        ecc=["mod_pres","target"];
        camb=[];
        testi=[];
    break;
    case "cont":
        ecc=[];
        camb=["mod_pres"];
        testi=["Scadenza e modalità presentazione domande"];
    break;
    case 'conser':
        ecc=["dat_scad","scad_perm"];
        camb=["target","mod_pres"];
        testi=["Sono invitati:","Data e luogo della conferenza:"];
    break;
    case 'manint':
        ecc=["target"];
        camb=["mod_pres"];
        testi=["Scadenza e modalità presentazione domande"];
    break;
  }
  for (i=0;i<ecc.length;i++){
    document.getElementById("layer_".concat(ecc[i])).style.display="none";
  }
  //Ciclo per cambiare etichetta
  for (i=0;i<camb.length;i++){
    //Crea il nuovo nodo nel DOM
    alert("tr");
    var lay=document.getElementById("layer_".concat(camb[i]));
    var txt= document.createTextNode(testi[i]);
    //Rimpiazza
    lay.replaceChild(txt, lay.getElementsByTagName("LABEL")[0]);
  }
campi=[“nome”、“avv_cat”、“ogg”、“dat_pub”、“dat_scad”、“scad_perm”、“ur”、“info”、“mod_pres”、“target”]

for(i=0;i最终解决了这个问题:CMS的一个怪癖使得它很难被发现,但它非常基本。 ReplaceChild将一个节点替换为另一个节点:

var lay=document.getElementById(“layer_u2;”.concat(camb[i]);
var txt=document.createTextNode(testi[i]);
//边缘广场
lay.replaceChild(txt,lay.getElementsByTagName(“标签”)[0]);

在上面的代码中,将要替换的节点是txt,定义为TextNode。因此,当代码第二次运行时,不再有label元素。解决方案显然是创建一个适当的label元素,将txt作为其子元素附加,并用这对元素替换

var lay=document.getElementById("layer_".concat(camb[i]));
var nwlb=document.createElement("label");
var txt=document.createTextNode(testi[i]);
nwlb.appendChild(txt);
//Rimpiazza
lay.replaceChild(nwlb, lay.getElementsByTagName("label")[0]);

第二次运行时,您能看到任何控制台日志吗?
var lay=document.getElementById("layer_".concat(camb[i]));
var nwlb=document.createElement("label");
var txt=document.createTextNode(testi[i]);
nwlb.appendChild(txt);
//Rimpiazza
lay.replaceChild(nwlb, lay.getElementsByTagName("label")[0]);