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
valeurn'a de sens que pour les éléments d'entrée, pas pourou
.Débarrassez-vous de cette
valeurdans ceet débarrassez-vous devar 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 lesvars.