JavaScript et le DOM

Le modèle de document de JavaScript "à l'ancienne"

Le DOM XML

Accès aux éléments

Sélection de Méthodes et propriétés disponibles sur un nœud

// Affichage récursif d'un nœud, en ne s'intéressant qu'aux nœuds textes.
function afficherNoeud(n) {
	s= "";
	switch (n.nodeType) {
		case 1:
				for (i=0; i< n.childNodes.length; i++) {
					s+= afficherNoeud(n.childNodes[i]);
				}
		break;
		case 3:
			s= n.nodeValue;
		break;
	}
	return s;
}

Remarque

Certains nœuds ont des champs supplémentaires, qui simplifient la vie. Par exemple, les nœuds qui correspondent à des entrées de formulaire dispose d'une propriété value. On trouvera une liste de ces propriétés à l'adresse http://www.w3schools.com/htmldom/dom_obj_text.asp.

Modification des éléments

On triche : innerHTML

Principe
innerHtml est une propriété des éléments DOM, et représente le code HTML compris à l'intérieur d'une balise. Par exemple, si j'ai la balise :
	<ul id='maliste'>
		<li> un</li>
		<li> deux</li>
	</ul>
	
Alors, document.getElementById("maliste").innerHTML vaut
		<li> un</li>
		<li> deux</li>
	

L'intérêt de cette propriété est qu'on peut l'utiliser pour modifier le contenu d'une balise.

Exemple
Du texte à remplacer....

Le code correspondant:

		<span id='testInnerHTML'>
			Du texte à remplacer....
		</span>
	
		<button onclick="javascript:remplacerInnerHTML()">remplacer texte</button>
	
		<script type="text/javascript">
			function remplacerInnerHTML() {
				//alert("ancienne valeur "+ document.getElementById('testInnerHTML').innerHTML);
				document.getElementById('testInnerHTML').innerHTML="le <b>texte de remplacement</b>";
			}
		</script>
	
Intérêt et limitation

Création en passant par le DOM

Création d'élément
Deux méthodes de document : Les éléments sont simplement créés, et pas insérés dans l'arbre.
Insertion d'élément
On insère les éléments dans un élément parent, en utilisant les méthodes suivantes (n étant un nœud) : Exemple

JavaScript et les CSS (Cascading Style Sheets)

Les caractéristiques de cet élément sont contrôlées par les CSS.
	function setCSS() {
		elt= document.getElementById('controleParCSS');	
		cssValue= document.cssTest.cssValue.value;
		switch (document.cssTest.cssName.value) {
			case 'background':
				elt.style.background= cssValue;
				break;
			case 'color':
				elt.style.color= cssValue;
				break;
			case 'fontSize':
				elt.style.fontSize= cssValue;
				break;
			case 'display':
				// none : caché ; inline : dans le cours du texte; block : comme un bloc.
				elt.style.display= cssValue;
				break;
			case 'position':
				// static, absolute ou relative
				elt.style.position= cssValue;
				break;
			case 'left':
				elt.style.left= cssValue;
				break;
			case 'right':
				elt.style.right= cssValue;
				break;
			case 'top':
				elt.style.top= cssValue;
				break;
			case 'bottom':
				elt.style.bottom= cssValue;
				break;
			case 'width':
				elt.style.width= cssValue;
				break;
			case 'float':
				// élément flottant : left, right, none
				elt.style.cssFloat= cssValue;
		}
		// empêche le rechargement de la page
		return false;
	}

Un exemple "moderne"

AJAX