Forum Clubic

Comment gérer fichier texte en tant que base de données en javascript ? (page 2)

Merci pour ta réponse. :slight_smile:

Perso, acutellement j’utilise le ONCLICK sur un INPUT de type CHECKBOX, si tu vois ce que je veux dire.
Je suppose que ça revient exactement au même que le ONCHANGE que tu me proposes. Donc si c’est bien le cas, alors jusqu’ici tout va bien. :wink:

Mais que mettre dans la fonction appelée par le ONCLICK ?
Si j’ai bien compris, tu me proposes de mettre un document.onload qui utiliserait le contenu d’un cookie ?
Dans ce cas, je suppose qu’il faudrait mettre au début de cette fonction, juste avant le document.onload, un bout de code qui va d’abord sauvegarder la valeur des cases (cochée ou non cochée) dans un cookie, non ?
Edité le 02/08/2012 à 16:38

Pour commencer : onclick = quand tu cliques. onchange = quand la checkbox change d’état.

Je vais prendre un exemple sommaire de ce que je veux dire : pastebin.com…

Sur tes checkbox, tu aurais :

<label><input type="checkbox" id="b1" value="Tintin" onchange="checkbox_onchange(this);" > Tintin</label>
<label><input type="checkbox" id="b2" value="Milou" onchange="checkbox_onchange(this);" > Milou</label>
<div id="contenu"></div>

Ainsi, si on change la valeur de la checkbox, cela affichera ou cachera un texte juste en dessous.

Au chargement, il te suffit de mettre dans le script :

<body onload="bidule()">
  ...
</body>

La fonction bidule() générera le contenu, et cochera les éléments. etatInitial contient les valeurs par défaut.

Je n’avais pas vu ta réponse si rapide et si complète, avec un exemple bien concret comme j’aime avoir pour essayer de comprendre. Je t’en remercie infiniment !

Certes, mais avec une checkbox, quand on click dessus, ça change forcément son état. :wink:

Sinon, plus sérieuseument, n’ayant donc pas vu ta réponse :frowning: , j’ai continué de chercher en direction du innerHTML et j’ai trouvé : le code que j’ai pondu n’est pas beau, mais il fonctionne à 100%. :bounce:

Le seul petit truc (ben non, ce n’est jamais parfait :neutre: ), c’est le temps qu’il faut pour modifier la page…
Avec quelques dizaines de fiches c’est immédiat, mais j’ai essayé avec 2000 fiches et là ça devient plus désagréable puisqu’il me faut environ 20 à 30 secondes pour modifier la page (Intel E8500, 8 Gio de RAM, 7 Pro 64 bits).
C’est le même temps que pour afficher la page au départ, donc je pense que c’est à cause du code qui génère chaque fiche et non du innerHTML. :wink:

Quoi qu’il en soit, le code que tu as développé pour m’expliquer comment procéder n’est pas inutile, loin de là puisque je vais l’étudier de prés et probablement le mettre en oeuvre pour voir si c’est tout de même plus rapide que ce que j’ai pondu. :wink:

Merci, merci et… merci :wink:

PS : je considère que le problème est résolu et que tu m’as donné la bonne réponse, en particulier avec le bout de code que tu viens de me donner.
Edité le 02/08/2012 à 22:48

Non. Quand tu cliques sur un checkbox, ça peut ne pas changer son état. Par exemple, si elle est désactivée, tu peux cliquer dessus mais rien ne se passe :slight_smile:

innerHTML > DOM en terme de rapidité.

PS: mets ton topic à Résolu tout ça tout ça :slight_smile:
Edité le 03/08/2012 à 14:51

Ah bon. Je ne pensais pas que le click était pris en compte lorsque la checkbox est désactivée.

What do you name “DOM” ??? :heink:

DOM = Document Object Model.

C’est un ensemble d’API pour manipuler du XML dont tu retrouves plusieurs implémentations dans différents langages, Java, Javascript, PHP, C, C++, … et en gros, si tu sais en faire en javascript tu sais en faire dans les autres langages modulo les spécificités de ces derniers.

L’exemple du click + désactivé était … un exemple, dans les faits, je crois que ça ne fait rien :stuck_out_tongue:

Je ne me souviens plus les cas où tu as onclick mais pas onchange, tu devrais essayer en cliquant mais sans relâcher la souris, puis en appuyant sur Echap : tu as bien fait un clic, mais tu n’as certainement pas coché.

Bref, onchange = changement d’état != onclick = tu as cliqué dessus.

Note : je confonds peut-être aussi avec les champs textes (même élément HTML), et là c’est peut-être plus parlant :wink: