Je souhaite utiliser la valeur d'un élément textarea, mais je ne parviens pas à l'obtenir

function postComment(element) {
  const content = element.previousSibling.value;
  console.log(content);
}
<form action="" class="comment-editor">
  <div class="form-group">
    <textarea class="form-control" name="" id="someid" rows="4"></textarea>
    <button type="button" class="btn btn-primary my-2" onClick="postComment(this)">Comment</button>
  </div>
</form>

Il donne undefined en sortie

0
Sachin Kumar 2 juin 2020 à 11:45

4 réponses

Meilleure réponse

Pouvez-vous essayer le code ci-dessous

function postComment(element) {
  const content = element.parentNode.firstElementChild.value
  console.log(content);
  return false;
}
<form action="" class="comment-editor">
  <div class="form-group">
    <textarea class="form-control" name="" id="someid" rows="4"></textarea>
    <button type="button" class="btn btn-primary my-2" onClick="return postComment(this)">Comment</button>
  </div>
</form>
2
Tim567 2 juin 2020 à 09:05

Puisque vous avez déjà un identifiant pour le champ <input>, j'aurais plutôt utilisé ce qui suit:

function postComment() {
  const content = document.getElementByID("someid").value;
  console.log(content);
}

Et pas besoin du paramètre ici:

onClick="postComment();"
0
Kosem 2 juin 2020 à 08:54
function postComment(element) {
  const content = element.previousElementSibling.value;
  console.log(content);
}
<form action="" class="comment-editor">
  <div class="form-group">
    <textarea class="form-control" name="" id="someid" rows="4"></textarea>
    <button type="button" class="btn btn-primary my-2" onClick="postComment(this)">Comment</button>
  </div>
</form>

Votre problème est que vous utilisez previousSibling alors qu'il devrait être previousElementSibling.

2
Tim567 2 juin 2020 à 08:57

Vous pouvez récupérer la valeur par cette modification dans votre code

const content = document.querySelector("#someid").value;
0
Diwakar 2 juin 2020 à 08:56