1
votes

this.value message non défini showin dans le code javascript

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;
}


4 commentaires

Cliquez sur ce texte!

Cliquez sur ce texte!


Pouvez-vous supprimer votre commentaire? Ça n'a pas sa place ici.


La valeur n'a de sens que pour les éléments d'entrée, pas pour ou

.


Débarrassez-vous de cette valeur dans ce et débarrassez-vous de var idq = this.value; , et changez id. innerHTML = idq; à id.innerHTML = '123'; , puisque vous connaissez déjà la valeur. Même si vous ne connaissez pas la valeur à laquelle servent les var s.


5 Réponses :


1
votes

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');
}


0 commentaires

0
votes

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;
}


0 commentaires

0
votes

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.


0 commentaires

0
votes

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";
}


0 commentaires

1
votes

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;
}


0 commentaires