Uso de Ext.DomQuery.select
Saludos a todos. Tengo un problema, resulta que tengo guardado en una variable en forma de string código html de esta forma:
var code = '<body> <table> <tr> <td><input type="text" id="1" value="test"></td> <td><input type="button" id="2" value="OK""></td> <td><img id="3" src="images/accept.png"></td> </tr> </table> </body>'y necesito obtener en forma de objeto html el elemento <input type="text" id="1" value="test"> para compararlo con el existente en la página en cuestion, estube usando Ext.DomQuery.select de la siguiente forma:
var input = Ext.DomQuery.select('body input[id=1]', code);pero resulta ser que esta función me devuelve el objeto, pero de la página y no de mi fragmento de código html. Existe algún error aquí o se puede hacer de alguna otra forma???
Ten encuenta que si en la pagina pones dos elementos body, el codigo te cogera el body inicial de la pagina. Mejor cambia en tu string en elmento body inicial por un div
mira que coincidencia, acabo de hacer eso mismo que dices, te copio mi código:
var node = Ext.DomQuery.select("chart[idGrafica]",response.responseXML);response.responseXML es un XML que recibí del servidor via Ajax, entonces hago una búsqueda sobre ese documento utilizando DomQuery.select. toma en cuenta que el segundo parámetro DEBE ser un Document Object Model y no un string <!-- s --><!-- s --> en tu caso te aconsejo utilizar un Xtemplate, compilarlo y luego hacer la búqueda sobre el resultado. espero te sirva. saludos
Me gusta tu idea, pero de que forma puedo compilarlo utilizando un xtemplate?, es que resulta ser que yo recibo del servidor un texto plano con código html haciendo una petición AJAX , de que forma puedo acceder a sus elementos utilizando DOM, específicamente Ext.DomQuery. Por eso puse el código html anteriormente en una variable en formato string porque de esa forma es que recibo la respuesta del servidor contenida en el objeto response.responseText. No se si me hago entender.
Muchas gracias por su ayuda, es muy valiosa. Saludos.
Ok, como te había comentado, primero necesitas crear (parsear) el string para tener dun DOM, los navegadores tienen una parser que puedes utilizar, te dejo un ejemplo que corre en firefox e imagino que cualquiero otro navegador bueno (no incluir IE)
Ext.onReady(function(){ var html = "<ul><li>Item 1</li><li class=\"selected\">item 2</li></ul>"; var parser = new DOMParser(); var doc = parser.parseFromString(html,"text/xml"); var li = Ext.select("ul li.selected",doc); console.debug(li); });te dejo de tarea que busque el parser correspondiente para IE, esta bien fácil y creo que lo encontrarás rápido. saludos PD: no te puse el de IE porque me da flojera abrir el IE y andar probando jejejejeje
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.