Javascript JS DOM replaceChild第二次不工作
我已经编写了一些非常基本的JS来隐藏、操作或更改标签标签中的一些文本,这些标签标签是某些div的子标签,这些div的特定名称由(较差的)CMS设置,以响应select元素的更改 显而易见的选择是使用DOM,但是一旦标签被更改,一旦不再更改,我就不知所措了。 这是JS: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
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]);