Changer la police après createTextNode ()

Je dois changer la police d'élément créée par la fonction createTextNode ():

var s = document.createTextNode(item.text); s.setAttribute("font size") = -1; elem.appendChild(s); 

Dans mon code, je reçois une erreur sur Firebug:

S.setAttribute n'est pas une fonction

Comment puis-je modifier une police d'élément créé?

Vous ne spécifiez pas de police sur les nœuds de texte , vous le faites sur l' élément parent – dans votre cas:

 elem.style.fontSize = "20px"; 

Si vous ne souhaitez pas modifier la taille de la police pour l'ensemble de l'élément parent, vous pouvez créer un élément <span> pour envelopper le nœud de texte:

 var span = document.createElement('span'); span.style.fontSize = "20px"; span.appendChild(s); elem.appendChild(span); 

CreateTextNode crée un nœud de texte qui n'a qu'une seule méthode: splitText. SetAttribute est une méthode de DOM Core qui est implémentée par l'interface Element (c.-à-d. Pas de nœuds de texte).

Généralement, vous devriez éviter setAttribute car il possède de nombreuses fonctionnalités et la définition de la propriété DOM associée est plus rapide et plus fiable.

En tout cas, il n'y a pas d'attribut "fontSize" spécifié dans HTML 4.01 pour les nœuds de texte, donc vous ne pouvez pas vous attendre à ce que les navigateurs le mettent en œuvre. Les nœuds de texte héritent de leur style à partir de leur élément parent, alors si vous souhaitez définir la taille de la police de certains textes, enveloppez-le dans un élément:

 window.onload = function() { var span = document.createElement('span'); // Set DOM property span.style.fontSize = '200%'; span.appendChild(document.createTextNode('hey')); // Add to document document.body.appendChild(span); }; 

Mais en général, il est préférable de définir le style dans une classe et de l'attacher à la portée.

Peut-être que vous pourriez utiliser inline css. Je n'ai jamais essayé cela avec un textnode cependant

 setAttribute('style', 'font-size:-1;');