0
votes

Est-il possible d'utiliser une variable à laquelle j'ai eu une fonction d'événement .Onclick et utilisez-la à l'extérieur dudit événement, dans une autre partie du code?

J'apprends JavaScript et je fais un projet simple où j'ai un formulaire (avec nom , lastname et Âge ) et un bouton. Je souhaite que l'utilisateur remplisse le formulaire et appuyez sur le bouton. Après cela, je souhaite utiliser l'événement .nonClick pour stocker toutes les informations d'un tableau. Ensuite, je souhaite créer un autre bouton lorsque j'ai appuyé sur IL indique une liste de tous les noms, nom de famille et âge de mon tableau. Le problème est que la matrice que je crée à l'intérieur de la fonction d'événement .Onclick ne peut être utilisée en dehors de ladite fonction. Est-ce que je fais quelque chose de mal ou est-il impossible de faire ça? Voici une partie de mon code: xxx


3 commentaires

S'il vous plaît poster aussi le HTML!


var listAfinal ... à l'aide de var Vous faites une variable locale, supprimez le var à partir de cette ligne et ajouter var Listafinal; à une portée courante supérieure


D'accord! Je viens d'éditer mon post et je l'ai fait plus lisible lol, je vais essayer de faire cette variable un global! Merci tout le monde!!!


4 Réponses :


2
votes

Définir simplement Listafinal code> en tant que variable globale et modifier sa valeur dans la fonction:

<!DOCTYPE html>
<html>
<head>
	<link rel="stylesheet" href="style.css">
	<title>Ejercicio 2</title>
</head>
<body style="background-color: #F1E8B8">
<div id="contenedor">
	Nombre:
	<br>
	<input type="text" name="Nombre" maxlength="20" id="nombre">
	<br>
	Apellido:
	<br>
	<input type="text" name="Apellido" maxlength="20" id="apellido">
	<br>
	Edad:
	<br>
	<input type="number" name="Edad" id="edad">
	<br>
	<br>
	<button type="button" id="input">Ingresar</button>
</div>

<button type="button" id="ver">Ver Lista</button>
<br>
<div id="resultado"></div>
<button onclick="newFunction()">Another button</button>
<script src="javascript2.js"></script>

</body>
</html>


5 commentaires

J'ai édité mon message alors maintenant, il est plus clair pour vous les gars. J'ai essayé ce que vous et les autres suggéra, mais je ne créerais pas un tableau d'un tableau? J'ai édité mon code mais cela ne reconnaîtra pas la valeur de la listeAfinal.name de la matrice.


Vous utilisez la variable lishafinal quand il n'a pas de valeur. Signifie que vous devriez écrire ce code dans la fonction oncclick résultantdo.innerhtml = listAfinal [0] .name;


Oui, cela fonctionnerait mais je veux montrer mon tableau lorsque vous cliquez sur un autre bouton, pas le même que j'utilise pour charger mon tableau. La raison pour laquelle j'utilise le "résultatdo.innerhtml = listAfinal [0] nom" .- Et pas lorsque je clique sur un autre bouton est parce que je veux m'assurer qu'il fonctionne en premier, alors je vais créer un autre bouton et mettre le résultatdo.innerhtml = Listafinal [0] Nom; à l'intérieur


Oui c'est pourquoi nous utilisons des variables globales. Voir la réponse mise à jour pour plus de détails ...


Merci beaucoup!



0
votes

Si vous déclarez votre variable en dehors de la fonction onclick , votre fonction onclick se référera à la variable en dehors de la fonction: xxx


2 commentaires

Ils auraient également besoin de supprimer le mot-clé var de la ligne appropriée à l'intérieur de la fonction, sinon il restera scopé à cette fonction.


Pourquoi cela a-t-il été évité? Y a-t-il quelque chose qui ne va pas avec ce que j'ai dit?



-1
votes

Vous pouvez déclarer var listAfinal en dehors de la portée de la fonction.

puis la réaffectez à l'intérieur de la fonction: xxx


1 commentaires

Depuis que vous dites que c'est naïf, vous voudrez peut-être décrire pourquoi et éventuellement ajouter une alternative.



2
votes

Semblable à la solution de Ritesh, mais vous n'avez même pas besoin de créer cette variable globale. Vous pouvez simplement l'ajouter à la fonction et l'accéder via INPUT.ONCLICK (comme INPUT.OnClick.ListFinal)

input.onclick = function() { 
 this.listFinal=CrearArreglo(lista,i);
}


2 commentaires

Il est dit: "TypeError non capturé: ne peut pas lire la propriété" 0 "de non définie". Lorsque vous souhaitez utiliser la valeur de LISTAFORNAL, appelez-vous cela comme ceci? résultant.innerhtml = input.onclick.listafinal [0];


"comme input.onclick.listfinal " , non seulement entrée.listfinal utiliserait donc entrée.listfinal [0] . Bien que personnellement, je ne polluerais pas l'objet d'entrée HTML lui-même avec des données arbitraires.