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>
3 Réponses :
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); }
Il ne renvoie pas de tableau .
Je change la réponse en état arrayLike
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.
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?
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.