changeText1 (id)
affichant une erreur non définie Je veux une valeur dans l'attribut de balise d'ancrage
<!DOCTYPE html> <html> <body> <h1 onclick="changeText(this)">Click on this text!</h1> <h1><a onclick="changeText1(this)" value="123">Click on this text!</a></h1> </body> </html>
function changeText(id) { id.innerHTML = "hii"; } function changeText1(id) { var idq = this.value; id.innerHTML = idq; }
5 Réponses :
Vous devez prendre getAttribute code >
pour un accès à des attributs non standard.
Cela fonctionne en combinaison avec la valeur transmise de this
, qui est id
dans la fonction.
Pour une meilleure compréhension du code, je suggère de renommer cette variable en element
.
<h1 onclick="changeText(this)">Click on this text!</h1> <h1><a onclick="changeText1(this)" value="123">Click on this text!</a></h1>
function changeText(element) { element.innerHTML = "hii"; } function changeText1(element) { element.innerHTML = element.getAttribute('value'); }
Veuillez mettre à jour votre fonction de changement de texte avec la fonction ci-dessous. Vous ne pouvez probablement pas obtenir d'attribut directement.
function changeText1(id) { var idq = id.getAttribute("value"); id.innerHTML = idq; }
value
n'est pas un attribut valide pour les éléments d'ancrage. Si vous souhaitez stocker les données d'application dans l'élément, utilisez un attribut data- *
et accédez-y à l'aide de la propriété dataset
.
<!DOCTYPE html> <html> <body> <h1 onclick="changeText(this)">Click on this text!</h1> <h1><a onclick="changeText1(this)" data-value="123">Click on this text!</a></h1> </body> </html>
function changeText(id) { id.innerHTML = "hii"; } function changeText1(id) { var idq = id.dataset.value; id.innerHTML = idq; }
De plus, vous avez écrit this.value
alors qu'il devrait être id.value
. Mais corriger cela ne résout pas le problème.
Il n'y a pas d'attribut appelé valeur
pour la balise d'ancrage. Vous pouvez utiliser data
pour stocker une valeur. Deuxièmement, vous pouvez utiliser une seule fonction pour la tâche.
// event is the event object // value in data-value can be replaced by anything,but prefix data- is necessary <h1 onclick="changeText(event)">Click on this text!</h1> <h1><a onclick="changeText(event)" data-value="123">Click on this text!</a></h1>
function changeText(e) { // get the current element which is clicked let elem = e.target; // check if the current element have any dataset with value as a key if (elem.dataset.value) { elem.innerHTML = elem.dataset.value; return; } elem.innerHTML = "hii"; }
Pour obtenir la valeur de la balise d'ancrage, vous devez faire comme ceci
function changeText1(param) { var val = param.getAttribute('value'); // ATTRIBUTE-NAME param.innerHTML = val; }
Cliquez sur ce texte!
Cliquez sur ce texte!
Pouvez-vous supprimer votre commentaire? Ça n'a pas sa place ici.
La
ou
valeur
n'a de sens que pour les éléments d'entrée, pas pour
.Débarrassez-vous de cette
et débarrassez-vous de
valeur
dans cevar idq = this.value;
, et changezid. innerHTML = idq;
àid.innerHTML = '123';
, puisque vous connaissez déjà la valeur. Même si vous ne connaissez pas la valeur à laquelle servent lesvar
s.