Bonsoir,
actuellement tu as deux problèmes. Le premier est un problème de guillemets, simple à régler : il suffit de les échapper avec un antislash \…
dico.Add("bonjour", "hello, <audio controls=\"controls\"><source src=\"hello.mp3\" type=\"audio/mp3\" /></audio>");
… Ou bien d’utiliser l’autre type de guillemets :
dico.Add("bonjour", 'hello, <audio controls="controls"><source src="hello.mp3" type="audio/mp3" /></audio>');
Le second problème, c’est qu’on ne peut pas ajouter de HTML dans une page via l’attribut value d’un champ de formulaire. Pour ça il y a plusieurs façons de faire, je te propose d’utiliser insertAdjacentHTML.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| function TraduireMot(mot) {
var input = document.forms[0].elements[3];
var n = this.nb_mot;
var indice = -1;
if (mot !== "") {
for (var i = 0; i < n; i++) {
if (this[i].txt === mot) {
indice = i;
break;
}
}
if (indice >= 0) {
input.value = this[indice].trad;
input.insertAdjacentHTML("afterend", "<audio controls=\"controls\"><source src=\"hello.mp3\" type=\"audio/mp3\" /></audio>");
}
else {
input.value = "Mot absent du dictionnaire";
}
}
} |
Les choses deviennent un peu plus compliquées quand l’utilisateur ou l’utilisatrice demande plusieurs traductions. C’est une situation qui arrive souvent, il faut en tenir compte.
Il faut détecter si un élément <audio> a déjà été inséré après l’input. Le cas échéant, on le retire avant d’insérer le nouveau.
1 2 3 4 5 6 7 8 9 10 11 12
| function TraduireMot(mot) {
... // le début de la fonction ne change pas
if (indice >= 0) {
input.value = this[indice].trad;
var audio = input.parentElement.querySelector("audio");
if (audio) {
audio.remove();
}
input.insertAdjacentHTML("afterend", "<audio controls=\"controls\"><source src=\"hello.mp3\" type=\"audio/mp3\" /></audio>");
}
else ... |
Garde à l’esprit que ces exemples que je te donne ont hello.mp3 codé « en dur », il faudra que tu fasses quelques adaptations pour que l’audio inséré lise le bon fichier. Je ne rentre pas dans les détails car je n’ai pas exactement compris comment tu utilises ta structure dico, mais vu ce que tu es déjà capable de faire, je pense que tu n’auras pas trop de difficultés
Puisque tu aimes bricoler, je te conseille de te munir des bons outils. Le plus important des outils est la console, que tu trouves dans le panneau d’outils de tout bon navigateur, et qui s’ouvre avec la touche F12. La console te permet de voir les messages d’erreurs du script, d’afficher les informations de débogage avec console.log(), ainsi que d’évaluer des bouts de script en direct.
Partager