1
votes

getElementByID continue de renvoyer undefined

Je reçois actuellement l'erreur indiquée dans le titre et j'ai essayé de résoudre le problème avec de nombreuses solutions trouvées sur stackoverflow mais aucune n'a encore fonctionné, toute suggestion / aide serait appréciée.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title> Donor Request </title>
  </head>
  <body>
    <form>
      <div>
        <label> Blood Type </label>
        <input type="text" name="" id="bloodType" value="">
        <label> Location </label>
        <input type="text" name="" id="Location" value="">
      </div>
      <button type="submit" name="button"> Request </button>
    </form>
  </body>
  <script type="text/javascript">

      const { ipcRenderer } = require('electron').remote;

      const form = document.querySelector('form')

      form.addEventListener('submit', submitForm);

      window.onload = function(){
        const bloodType = document.getElementById("bloodType").value;
      }

      function submitForm(e){
        e.preventDefault();
        console.log("working");
        console.log(bloodType, "working");
        ipcRenderer.send('Request:bloodType', bloodType);
    }

  </script>
</html>


2 commentaires

mais il n'y a aucun code getElementByID ici.


@MadhawaPriyashantha je vois que j'ai accidentellement copié l'ancienne version, j'ai mis à jour la question.


3 Réponses :


0
votes

Déclarez bloodType comme var ou let en dehors de onLoad pour le rendre accessible dans une autre méthode, ou obtenez-le de l'intérieur submitForm .

let bloodType;

window.onload = function(){
    bloodType = document.getElementById("bloodType").value;
}

function submitForm(e){
    e.preventDefault();
    console.log("working");
    console.log(bloodType, "working");
    ipcRenderer.send('Request:bloodType', bloodType);
}
function submitForm(e){
    const bloodType = document.getElementById("bloodType").value;
    e.preventDefault();
    console.log("working");
    console.log(bloodType, "working");
    ipcRenderer.send('Request:bloodType', bloodType);
}


2 commentaires

Il ne renvoie pas de tableau .


Je change la réponse en état arrayLike



1
votes

Lorsque vous utilisez const , votre variable sera confinée à la portée de la fonction dans laquelle elle a été déclarée. Cela signifie que vous ne pouvez pas accéder à bloodType en dehors de votre fonction de rappel window.onload .

Au lieu de cela, une solution possible pourrait être de faire de bloodType un variable globale, puis définissez sa valeur dans votre rappel onload comme ceci:

let bloodType;
window.onload = function(){
  bloodType = document.getElementById("bloodType").value;
}

De cette façon, vous pouvez accéder à bloodType code > à travers toutes vos fonctions, sans avoir à interroger le DOM une seule fois.


0 commentaires

0
votes

Comme d'autres l'ont mentionné, vous devez définir bloodType en dehors de la fonction window.onload en utilisant let ou dans le submitForm fonction.

<div id="example">some text</div>

La chose intéressante ici est que la variable bloodType que vous utilisez dans votre submitForm ne lèvera pas d'erreur de référence. Parce que bloodType fait référence à l'élément d'entrée réel avec le id = bloodType .

Si vous avez un élément

function submitForm(e) {
  let bloodType = document.getElementById("bloodType").value;

  e.preventDefault();
  console.log("working");

  console.log(bloodType, "working");
  ipcRenderer.send('Request:bloodType', bloodType);
}

example.innerHTML renvoie du texte sans avoir à créer la variable let example = document.getElementById ("example") manuellement

Donc, si vous deviez faire bloodType.value code> avec votre code existant, cela fonctionnera. Mais, vous devriez utiliser document.getElementById("bloodType").value

Plus d'infos: Les éléments de l'arborescence DOM avec des identifiants deviennent-ils des variables globales?


0 commentaires