2010-03-26 11 views
34

Puis-je convertir une chaîne en un objet HTML? comme:convertir une chaîne javascript en un objet html

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

afin que je puisse plus tard obtenir en identifiant et faire un peu de changement dans son style

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

Thanx un million à l'avance, Lina

Répondre

24

Vous ne pouvez pas le faire avec juste la méthode, sauf si vous utilisez un cadre javascript comme jquery qui le prend en charge ..

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

mais encore, il ne serait pas trouvé par le getElementById car pour que cela fonctionne l'élément doit être dans le DOM ... le simple fait de créer dans la mémoire ne l'insère pas dans le dom.

Vous devez utiliser append ou appendTo ou after etc .. pour le mettre dans le premier dom ..

Of'course tout cela peut être fait par javascript régulier, mais il faudrait plus des mesures pour accomplir la même chose ... et la logique est la même dans les deux cas ..

+20

jQuery est cool, mais il est seulement JavaScript –

+0

belle approche :) je peux donc écrire $ (s) .css ("marge-dessus") pour obtenir la marge supérieure puis modifiez-le et écrivez-le à la page ... J'AIME cette réponse: D – Lina

+0

content que vous l'aimiez Lina :) Je pense que cette taille/properties ne serait pas accessible avant de l'insérer dans le DOM. Cela a du sens, car un élément serait influencé par l'endroit où il se trouve dans le DOM. ted .. mais la référence à l'objet est toujours valide, donc une fois que vous l'insérez dans le DOM, vous pouvez interroger ses propriétés de taille comme largeur/hauteur/marges etc. –

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

Oui, ou juste 'htmlObject.firstChild' puisque vous savez que c'est où ça sera toujours. – bobince

+4

Ce n'est pas tout à fait correct, car vous ne pouvez pas appeler getElementById sur une instance htmlObject créée. – apocalypz

+0

vous pouvez ajouter le htmlObject à un fragment de document afin d'utiliser getElementById, comme 'var fragment = document.createDocumentFragment(); fragment.appendChild (htmlObject); fragment.getElementById ("myDiv"). style.marginTop = quelque chose, ' –

3

en plus de Gaby méthode de aka, nous pouvons trouver des éléments à l'intérieur htmlObject de cette façon -

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

Fiddle est disponible ici - http://jsfiddle.net/ashwyn/76gL3/

1

Si le navigateur que vous prévoyez d'utiliser Mozilla (développement Addon) (pas sûr de chrome), vous pouvez utiliser la méthode suivante 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")); 
}; 

Espoir cela aide

16

eu le même problème. J'ai utilisé un sale tour comme ceci:

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

Maintenant, vous pouvez ajouter des styles comme vous l'aimez:

htmlObject.style.marginTop = something; 
Questions connexes