2010-03-26 10 views
34

¿puedo convertir una cadena en un objeto html? como:convirtiendo una cadena de javascript en un objeto html

string s = '<div id="myDiv"></div>'; 
var htmlObject = s.toHtmlObject; 

de modo que pueda posteriormente conseguirlo por id y hacer algún cambio en su estilo

var ho = document.getElementById("myDiv").style.marginTop = something; 

Gracias un millón de antemano, Lina

Respuesta

24

Usted no puede hacerlo con solo el método, a menos que use algún marco de JavaScript como jquery que lo admita ...

string s = '<div id="myDiv"></div>' 
var htmlObject = $(s); // jquery call 

pero aún así, no se encontró en el getElementById porque para que funcione el elemento debe estar en el DOM ... solo al crear en la memoria no se inserta en el dom.

Usted tendría que utilizar append o appendTo o after etc .. para ponerlo en la primera dom ..

Of'course todos estos se puede hacer a través de JavaScript regular, pero se necesitaría más pasos para lograr la lo mismo ... y la lógica es la misma en ambos casos ..

+20

jQuery es fresco pero es solamente JavaScript –

+0

acercamiento agradable :) así que puede escribir $ (s) .css ("margen superior") para obtener el margen superior y luego modificarlo y escribirlo en la página ... ME ENCANTA esta respuesta: D – Lina

+0

me alegra que te guste Lina :) Creo que ese tamaño/properties no sería getable antes de insertarlo en el DOM ... Tiene sentido, porque un elemento estaría influenciado por el lugar en el DOM en el que se inserta ted .. pero la referencia al objeto sigue siendo válida, así que una vez que lo insertes en el DOM puedes consultar sus propiedades de tamaño como ancho/alto/márgenes, etc. –

52
var s = '<div id="myDiv"></div>'; 
var htmlObject = document.createElement('div'); 
htmlObject.innerHTML = s; 
htmlObject.getElementById("myDiv").style.marginTop = something; 
+4

Sí, o simplemente 'htmlObject.firstChild' ya que sabes eso donde siempre estará – bobince

+4

Esto no es exactamente correcto, porque no puede llamar a getElementById en la instancia de htmlObject creada. – apocalypz

+0

podría agregar el htmlObject a un fragmento de documento para usar getElementById, como 'var fragment = document.createDocumentFragment(); fragment.appendChild (htmlObject); fragment.getElementById ("myDiv"). style.marginTop = algo; ' –

3

Además de Gaby método de alias, podemos encontrar elementos dentro htmlObject de esta manera -

htmlObj.find("#box").html(); 

violín está disponible aquí - http://jsfiddle.net/ashwyn/76gL3/

1

Si el navegador que está planeando utilizar es Mozilla (desarrollo Addon) (no estoy seguro de cromo), puede utilizar el siguiente método en Javascript

function DOM(string) 
{ 
    var {Cc, Ci} = require("chrome"); 
    var parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser); 
    console.log("PARSING OF DOM COMPLETED ..."); 
    return (parser.parseFromString(string, "text/html")); 
}; 

Esperanza esto ayuda a

16

Tenía el mismo problema. He utilizado un truco sucio, así:

var s = '<div id="myDiv"></div>'; 
var temp = document.createElement('div'); 
temp.innerHTML = s; 
var htmlObject = temp.firstChild; 

Ahora, puede agregar estilos a su gusto:

htmlObject.style.marginTop = something; 
Cuestiones relacionadas