Ne pas confondre l'affectation "=" et le test de valeur "=="
document.getElementsByName( "chkbx1").checked = false
document.getElementsByName( "chkbx1").checked == false
-----
Ne pas confondre l'affectation "=" et le test de valeur "=="
document.getElementsByName( "chkbx1").checked = false
document.getElementsByName( "chkbx1").checked == false
Un site de référence : http://www.w3schools.com/js/
Par la même occasion, évite les underscore "_", habitude hérité du C et du VB.
Prèfère une règle de nommage du style
nomDeMaVariableQuiSertAFaireCa , plutôt que nom_de_ma_variable_qui_sert_a_ faire_ca.
la règle ici utilisée étant qu'une variable ne commence que par une lettre miniuscules, les mots signifiants introduits dedans étant des majuscules, cela permet de les repérer plus facilement.
C'est une règle très souvent utilisée car elle permet facilement de repérer visuellement les variables.
Tiens toi à une règle précise si tu ne veux pas confondre maVariable avec MaVariable qui créera un bug difficile à repérer.
Cette page HTML fonctionne chez moi :
Code HTML:<!DOCTYPE html> <html> <head> <script> function masque_non_cochee() { if(!document.form1.chkbx1.checked) { document.getElementById("label").style.visibility="hidden"; } } </script> <title>test</title> </head> <body> <form name="form1"> <div id="label"><input name="chkbx1" type="checkbox" value="cochee">Label here</div> </form> <button onclick="masque_non_cochee()">run </button> </body> </html>
Dernière modification par JPL ; 28/04/2016 à 19h45. Motif: Remplacement de la balise Code par la balise HTML
Rha j'étais pas loin, merci pour les conseils et pour la correction. C'est quasiment la seule fonction qu'il va me falloir je pense.
La prochaine étape c'est le balisage de chaque élément sur Bluegriffon, si j'ai bien compris il y a un icone "encapsuler" , ça m'ajoute des balises <span>, qui ducoup sont toujours les mêmes donc ça va poser souçi. Vais-je avoir à poser moi-mêmes chacune des balises ?
@cherbe:
Tu utilises if(!document.form1.chkbx1.chec ked)
et non ce qu'il avait indiqué if(document.form1.chkbx1.check ed) = false
car dans sa formulation, il y a une erreur de syntaxe avec le "=", il faut mettre "==".
@muchaco
Si tu persévères dans le Javascript pur et dur, je te conseille d'apprendre la grammaire du langage, sinon tu vas droit dans de graves désillusions.
Pour faire disparaitre toutes les checkbox, il faut y associer une balise differente à chacune, pour ajouter ces balises, il faut le faire à la main ?
Je ne me lance pas dans le Javascript, je le survol, juste le temps de faire le logiciel simple que je veux, même s'il n'est pas super optimisé.
Il y avait d'autres erreurs j'ai donc tout repris, d'où cette modification du code initial
Oui et non. Si tu n'as pas trop de boutons à tester, tu peux agir ainsi.
Si il y en a beaucoup, il y a une autre solution consistant à leur donner le même nom à tous et faire le test en boucle sur ce nom.
Quelque chose come ça ?
je ne vois pas non plus l'utilité de la balise form ? Pourquoi on écrit !document.form1 ?Code HTML:<!DOCTYPE html> <html> <head> <script> function masque_non_cochee() { var i=0 var nom=chkbx num=nom+i for(i=0,i<300,i++){ if(!document.form1.num.checked) { document.getElementById("label").style.visibility="hidden"; } } } </script> <title>test</title> </head> <body> <form name="form1"> <div id="label"><input name="chkbx1" type="checkbox">Label here</div> <div id="label"><input name="chkbx2" type="checkbox">Label here</div> </form> <button onclick="masque_non_cochee()">run </button> </body> </html>
Dernière modification par JPL ; 28/04/2016 à 19h43. Motif: Remplacement de la balise Quote par la balise HTML
Je crois que non seulement il faudrait que tu te penches sérieusement sur le Javascript, et pas te contenter de le survoler comme tu dis, mais il faudrait en plus te pencher sur le HTML.
C'est pas gagné tout ça, tu aurais du suivre les conseils de CM63 à mon avis, car là, sauf si Cherbe t'écris tout le programme, tu ne t'en sortiras pas...
Plutôt ça :
Dans ce cas précis, elle ne sert à rien.Code:<!DOCTYPE html> <html> <head> <script> function masque_non_cochee() { var nb=document.getElementsByName('nom').length; for(i=0;i<nb;i++) { var nom='chkbx'+i; alert(nom); if(!document.getElementsByName(nom).checked) { document.getElementById("label").style.visibility="hidden"; num=nom+i; } } } </script> <title>test</title> </head> <body> <form name="form1"> <div id="label"><input name="nom" type="checkbox">un</div> <div id="label"><input name="nom" type="checkbox">deux</div> </form> <button onclick="masque_non_cochee()">run </button> </body> </html>
C'est un test négatif obtenu par le point d'exclamation : si l'élément n'est pas checked...
Ca a pas l'air simple non plus d'utiliser un CMS surtout que j'ai pas envie de passer par un hebergeur, sinon comme je l'ai dit si je bloque vraiment sur javascript je verrai. J'en ai quasiment fini avec les fonctions qu'il me faut, après y'a plus qu'à appliquer, c'est un truc long mais simplissime que je dois faire. Cherbe a fait du bon boulot haha, on a bien avancé.
Ca y est, par contre, sans faire des labels differents ca ne passe pas apparament. Tu m'a parlé d'un moyen pour ne pas avoir à faire plusieurs labels ?
Avec ça et un peu de temps, c'est bon.
<!DOCTYPE html>
<html>
<head>
<script>
function masque_non_cochee()
{
var nb=document.getElementsByName( 'nom').length;
for(i=0;i<nb;i++)
{
var nom='chkbx'+i;
var nombalise='label'+i;
alert(nom);
if(!document.getElementsByName (nom).checked)
{
document.getElementById(nombal ise).style.visibility="hidden" ;
}
}
}
</script>
<title>test</title>
</head>
<body>
<form name="form1">
<div id="label0"><input name="nom" type="checkbox">un</div>
<div id="label1"><input name="nom" type="checkbox">deux</div>
</form>
<button onclick="masque_non_cochee()"> run </button>
</body>
</html>
Oublie les codes précédents qui ne fonctionnaient pas vraiment et teste celui-ci. Tu as juste à modifier les labels (en rouge):
Code:<!DOCTYPE html> <html> <head> <script> function masque_non_cochee() { var inputs=document.getElementsByTagName("input"); var labels=document.getElementsByTagName("label"); var nb=inputs.length; alert(labels.length); for(i=0;i<nb;i++) { //alert(i); if(!inputs[i].checked) { inputs[i].style.visibility="hidden"; labels[i].style.visibility="hidden"; } } } </script> <title>test</title> </head> <body> <form name="form1"> <label for="nom">un</label><input name="nom" id="nom" type="checkbox"> <label for="nom">deux</label><input name="nom" id="nom" type="checkbox"> <label for="nom">trois</label><input name="nom" id="nom" type="checkbox"> </form> <button onclick="masque_non_cochee()">run </button> </body> </html>
Ah oui beaucoup plus pratique comme ça merci, j'ai qu'à mettre le forme tout en haut puis copier coller les checkbox et remplacer le texte.
Je vous enverrai une petite partie de mon code quand j'aurai avancé. J'ai encore un ou deux trucs en tête mais c'est pour peaufiner. Faut que je test la migration vers Word
Salut, je reviens vers vous après quelques temps, pour quelques conseils.
J'ai avancé mon formulaire sous Bluegriffon et il fonctionne bien, maintenant je me demande comment je pourrais repasser de ma page html à un fichier word :
j'ai bien essayé ctrl+a et copier puis coller sous word mais là, soit il me colle tout, même les menus déroulants, soit je fais "coller uniquement le texte", et la word m'enlève toute la mise en page, ajoute beaucoup de sauts de ligne. La mise en page est toute à refaire dans ce cas et c'est pas super pratique.
Quelqu'un a une idée pour passer d'une page html à une page word ?
Merci
Bonjour,
Si c'était pour ensuite envoyer les données dans Word (je te conseillerais plutôt Excel car tu pourrais espérer conserver la structure des données) tu aurais mieux fait de développer cela sous VBA, quite à apprendre un langage de programmation. Je ne vois pas l'intérêt de le faire en html si tu n'as pas l'intention de le rendre accessible sur le web.
+1Bonjour,
Si c'était pour ensuite envoyer les données dans Word (je te conseillerais plutôt Excel car tu pourrais espérer conserver la structure des données) tu aurais mieux fait de développer cela sous VBA, quite à apprendre un langage de programmation. Je ne vois pas l'intérêt de le faire en html si tu n'as pas l'intention de le rendre accessible sur le web.
En effet ça parait complètement surréaliste.
D'accord, mais je ne pense pas qu'apprendre le VBA soit la meilleure solution, et faire un document d'une vingtaine de page sous excel ne me parait pas réaliste non plus.
Il n'y a rien qui permette de conserver un mlinimum la mise en page d'une page html pour l'exporter vers word ?
Il est possible d'ouvrir un html depuis word très proprement, je veux faire l'inverse, je ne vois pas pourquoi ca serait surréaliste.
Bricoler avec un langage inadapté en est sans doute une meilleure.
Le HTML est destiné à l'affichage. C'est un format "final".
Faire ce que j'ai à faire sous excel c'est de la folie, c'est pas adapté du tout.
Tant pis faudra se retaper la mise en page, c'est pas hyper long mais c'est pas pratique non plus.
Mais pour quelle raison tu veux ramener le formulaire dans Word ?
Pour compléter la mise en page (ajout d'en-têtes) et pour ensuite imprimer/transférer à d'autres collaborateurs. Le format html doit pas être trop à la mode en entreprise je pense haha, et puis l'impression depuis html serait incomplète et beaucoup plus compliquée à mettre en oeuvre pour un rendu comme sur word.
Qui peut le plus, peut le moins ! Tu as déjà fais le plus compliqué donc ajouter des en-têtes et mise en page n'est pas compliqué.
Pas du tout. Je m'inscris en faux. La démarche est légèrement différente mais pas plus compliquée.
C'est justement parce que tu ne connais pas le VBA, mais en VBA, tu ferais une fenêtre de saisie exactement identique à celle que tu fais en HTML, et sans doute beaucoup plus interactive, en intégrant des données que tu pourrais stocker et en historisant ce que fait l'utilisateur, ensuite en fusionnant avec Word le résultat et la mise en page sera beaucoup plus élégant qu'en HTML.
Et si Excel et Word coutent trop cher, tu as les mêmes gratuits en open source avec OpenOffice
Je n'ai rien contre VBA que j'utilise encore assez souvent mais pour ce cas, tel qu'il a été exposé (il n'a jamais été question de récupérer les données), je ne vois pas ce qu'il apporterait ni en quoi il serait plus interactif ?C'est justement parce que tu ne connais pas le VBA, mais en VBA, tu ferais une fenêtre de saisie exactement identique à celle que tu fais en HTML, et sans doute beaucoup plus interactive, en intégrant des données que tu pourrais stocker et en historisant ce que fait l'utilisateur, ensuite en fusionnant avec Word le résultat et la mise en page sera beaucoup plus élégant qu'en HTML.
Et si Excel et Word coutent trop cher, tu as les mêmes gratuits en open source avec OpenOffice
D'autre part, si c'est à faire VBA, pourquoi ne pas le faire directement sous word ?
Comme tu le dis VBA n'est pas que Excel, c'est aussi utilisable sous Word (entres autres)
Directement sous word me semble plus compliqué, mais pourquoi pas, on peut aussi y mémoriser les infos fournies en saisie dans un fichier texte.
Si j'évoque la possibilité de stocker les saisies, c'est aussi pour pouvoir reprendre une saisie partielle, repartir d'une saisie effectuée, toute sorte de choses qui sont très utiles à l'usage et plus pratique en VBA qu'en HTML, et que l'on ne peut pas faire quand on ne fait que stocker le document final.
Ensuite cela permet de faire des statistiques d'utilisations, de paramétrer beaucoup plus facilement les listes de valeurs possibles, toutes sortes de choses qui sont plus compliquées à faire car il faut à chaque fois modifier le code HTML.
Enfin pour éditer le document final, Word me semble plus indiqué qu'un routine en HTML.
Maintenant ce que j'en dis.