Javascript / DOM, analizando la cadena de clave / valor
Frecuentes
Visto 439 veces
0
Envío una cadena desde un servidor al navegador Firefox en el siguiente formato:
"KEY:a1 VAL:123.45"
Y esta cadena puede contener muchos registros de este tipo.
Aquí está el código que he escrito:
var e;
var reply = request.responseText;
var txt = "", tab, key = "", val = "";
var x = reply.getElementsByTagName("KEY:");
for(i = 0; i < x.length; i++)
{
txt = x[i].childNodes[0].nodeValue; // "KEY:%c%c VAL:%.2F"
tab = txt.split(":");
key = "table_" + tab[1].substring(0,1);
val = tab[2];
e = document.getElementById(key);
e.innerHTML = val;
e.style.display = "block";
}
val
"KEY:a1 VAL:123.45"
en lugar de lo esperado "123.45"
(y por supuesto el key
variable también es incorrecta, no coincide con una celda de la tabla, simplemente elige la primera en la tabla).
Ni siquiera sé cómo mostrar el key
y val
valores (document.write() y alert() no hacen nada y no veo cómo rastrear este código en Firefox).
Cualquier idea, consejo, corrección o ejemplo de código es bienvenido, pero no recomiendo usar ninguna biblioteca, quiero hacerlo con poco código.
EDITAR: de los dos comentarios, entiendo que hay dos formas distintas de proceder: ya sea usando objetos DOM y etiquetas HTML, o usando 'cadenas'. Preferiría seguir usando el formato anterior, así que guíeme a una solución de 'cadena'. ¡Gracias!
1 Respuestas
2
Puede usar una expresión regular simple para extraer la información de la cadena:
var value = "KEY:a1 VAL:123.45",
pattern = /KEY:(\S+) VAL:(.+)$/g;
var result = pattern.exec(value);
// result[1] == 'a1'
// result[2] == '123.45'
En tu caso, usarías request.responseText
en lugar de value
.
respondido 09 mar '12, 18:03
No olvides aceptar la respuesta que más te ayudó ;) - Félix Kling
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript ajax dom or haz tu propia pregunta.
CLAVE: no es un nombre de etiqueta y la respuesta no es un objeto - Amberlamps
reply
no es un elemento DOM, es una cadena. Las cadenas no tienen un método aagetElementsByTagName
y esa cadena ni siquiera contiene HTML. - Felix KlingGracias por la información. ¿Puedes explicar cómo debo hacerlo entonces? (ya sea creando 'objetos' y usando etiquetas HTML, o analizando una 'cadena', esta última a mi favor) - Gil
Gracias por la información. ¿Puedes explicar cómo debo hacerlo entonces? (ya sea creando 'objetos' y usando etiquetas HTML, o analizando una 'cadena', esta última a mi favor) - Gil