2014-06-27 6 views
-2

Je travaille sur un projet pour l'école et je voulais créer une fonction javscript qui ajoute du texte à un élément html avec une méthode onclick qui exécutera une fonction.Javascript Inner HTML avec des balises HTML

function a(func, words){ 
    var initfunc = "<span class = 'link' onclick='" + String(func) +"();'>" + 
      words + "</span>"; 
    return t.innerHTML += initfunc; 
} 

Le problème est que lorsque la page est couru avec cette fonction, le code html PRÉSENTÉES les balises agissant dans le cadre de la chaîne, ne pas agir en tant que balises html.

Répondre

3

String(func) ne donnera pas le nom de la fonction.

Pour cela, vous pouvez utiliser func.name, défini dans le brouillon ES6, mais cela ne fonctionnera que si la fonction est globale.

Une meilleure utilisation des méthodes DOM si vous voulez ajouter des écouteurs d'événement:

function a(func, words){ 
    var span = document.createElement('span'); 
    span.className = 'link'; 
    span.onclick = func; 
    span.appendChild(document.createTextNode(words)); 
    t.appendChild(span); 
}