2 votes

Les fermetures empêcheront-elles la destruction de mes données vulnérables ?

Je vais l'admettre. Je ne comprends pas les fermetures. Peu importe le nombre de vidéos que je regarde, ou les explications que je lis, elles me dépassent. C'est assez embarrassant, car j'ai vu qu'environ 14 000 personnes sautaient de joie après avoir lu les explications ici :

Comment fonctionnent les fermetures JavaScript ?

Mais malgré mon ignorance, je pense que je pourrais avoir besoin de fermetures pour résoudre mon problème. Le voici : J'ai mis en place un couple de <div> Tags dans le but exprès de me donner quelque chose que je puisse cloner dans une routine JavaScript. Voici mon <div> structure. C'est de la pure perfection.

<div id="Anchor-Div-01">

<div id="Display-Div-02">

<p>This is a Test</p>

</div>

</div>

J'ai créé plusieurs boutons HTML qui entraînent diverses routines JavaScript à perturber intentionnellement soit le paragraphe, soit la balise "Display-Div-02", et je veux pouvoir les remettre dans leur forme originale. À cette fin, lorsque la page Web a été initialement chargée, j'ai utilisé les deux équations ci-dessous pour cloner le nœud original "Display-Div-02" qui a ensuite été enregistré dans la variable "Div_Clone_02" (comme indiqué ci-dessous).

var Temp_Anchor_1 = document.querySelector("#Anchor-Div-01");  

var Div_Clone_02 = Temp_Anchor_1.children[0].cloneNode(true); 

J'ai également placé un bouton "Reset" sur la page qui supprimera le nœud défectueux, puis copiera le nœud "Div_Clone_02" dans l'espace vide, pour tout ramener à son état initial de perfection.

Malheureusement, ma variable "Div_Clone_02" dépend de l'état actuel (erroné) de la variable "id=Display-Div-02". <div> et le <p> car ces deux balises HTML sont cachées dans les enfants [0] ci-dessus. Ainsi, mon nœud "Div_Clone_02" n'est plus un clone de l'original. <div> le nœud cloné est précisément aussi raté que l'est le Display-Div-02.

Je ne suis pas assez stupide pour revenir à ces deux équations et recalculer la valeur du nœud "Div_Clone_02" (alors que la balise "Display-Div-02" est dans un état de confusion). Mais le navigateur recalcule subrepticement le Clone dans mon dos, sans que je lui demande de le faire.

Quelqu'un peut-il me dire comment enregistrer la valeur initiale de ma variable Clone ("Div_Clone_02" ci-dessus), puis sauvegarder cet état initial dans un ( oserais-je le dire ?) espace sécurisé ... où il ne sera pas détruit par toutes les routines JavaScript malveillantes qui tentent de gâcher ma page Web parfaite ?

0voto

Winston Brown Points 97

Si je ne me trompe pas, je ne pense pas que vous ayez besoin de fermetures dans ce cas. Commençons par le commencement. Une fermeture est fondamentalement une fonction qui est à l'intérieur d'une autre fonction. Exemple :

function foo(){
let array = [1,2,3];
  function printArray(){
  console.log(array);
}
printArray();
}

De cette façon, la fonction interne aura accès aux variables de la fonction externe. C'est pourquoi vous pouvez faire console.log(array) car vous y avez maintenant accès. Voilà qui est clair (je l'espère), pour stocker la valeur initiale vous pouvez utiliser localStorage . Il suffit de faire une recherche sur Google ou de regarder une vidéo sur YouTube pour s'en sortir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X