BOUCLE FOR

Signaler
Messages postés
175
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
8 mars 2015
-
Messages postés
175
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
8 mars 2015
-
BONSOIR,
Je me prends la tête avec une boucle for imbriquée que je n'arrive pas à faire, un ptit coup de main svp.

Bon là je peux créer un twisty en cliquant sur le bouton 1; j'aimerai pouvoir en créer plusieur simultanéement en fonction du chiffre que j'aurai inscrit dans un input; à votre avis

merci d'avance

<HTML><HEAD><TITLE></TITLE><LINK href= "css.js" type=text/css rel=stylesheet>
<SCRIPT language=javascript type=text/javascript>
<!--
function affiche(a1,b1,l) {
if (a1.style.display =='') {
a1.style.display = 'none';
if (l== 1) {b1.src='./Img/tri.gif'; b1.alt='';}
}
else {
a1.style.display='';
if (l== 1) {b1.src='./Img/tridown.gif'; b1.alt='';}
}
}


-->
</SCRIPT>


<SCRIPT>function changediv2(){
var diva;
val = document.getElementById('nbr').value;
for (var x=1; x<=val;x++);


if (document.getElementById('a'+val).contentEditable =='true')
{document.getElementById('a'+val).contentEditable ='false';}
else
{document.getElementById('a'+val).contentEditable ='true'}}</SCRIPT>


<SCRIPT>
function doSize(fSize)
{n=1;
while (document.getElementById("a"+n)!=null)
{ document.getElementById("a"+n).document.execCommand('fontsize', false, fSize);
n++; }}
function doFont(fName)
{n=1;
while (document.getElementById("a"+n)!=null)
{ document.getElementById("a"+n).document.execCommand('fontname', false, fName);
n++; }}
</SCRIPT>


<SCRIPT type=text/javascript>
function genere(nb)
{ for (var i=1;i<=nb;i++)
{ frm.innerHTML+="

1er SOUS TITRE
<COMMENT>/////SOUS SOUS TITRE 1////////</COMMENT>

Sous-titre
-
"; } }
</SCRIPT>


<SCRIPT type =text/javascript>
function generesous(nb)
{for (var i= 1;i<=nb;i++);
var nb = document.getElementById('nbr2').value;
{ document.getElementById('a'+nb).innerHTML+="

1er SOUS TITRE
<COMMENT>/////SOUS SOUS TITRE 1////////</COMMENT>

Sous-titre
-
"; }}
</SCRIPT></HEAD>


<FORM name =frm>




1
2






eee

jjj





</FORM>



</HTML>

6 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Exemple O combien pédagogique...

pour qu'une boucle fasse quelque chose EVITE le ; à la fin

<hr size= "2" width="100%">function generesous(nb){
for (var i=1;i<=nb;i++) ; // elle tourne sur elle en incrémentant i
var nb = document.getElementById('nbr2').value;
{
document.getElementById('a'+nb).innerHTML+= "...blabla...";
}
}
elle pourrait ressembler à cela...

function generesous(nb){

// Pourquoi passer nb si il est redéfini

var nb = document.getElementById('nbr2').value;

for (var i= 1;i<=nb;i++)
{

document.getElementById('a'+ i ).innerHTML+ ="...blabla...";

}

}

Note au passage que i remplace nb qui lui ne bouge pas...

<hr size= "2" width="100%">function changediv2(){
var diva ; // ne sert à rien, c'est pour faire avancer le chimlblic
var val = document.getElementById('nbr').value; // il sort d'ou nbr
for (var x= 1; x<=val;x++){
if (document.getElementById('a'+ val ).contentEditable == ' true
'
){
document.getElementById('a'+val).contentEditable =
'
false
'
;
}
else{
document.getElementById('a'+val).contentEditable =
'
true
';

}
}
#1 :
val n'est pas incrémenté =>
document.getElementById('a'+val) toujours le même...idem que
generesous(nb) ci dessus...



#2 : true et false sont des constante en mettant 'true' on obtient un chaine de caractère
<hr size="2" width="100%">On s'arrête là pour te laisser le temps de digérer...

Obstines toi c'est en forgeant qu'on devient <strike>fatigué</strike> forgeron...
Messages postés
175
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
8 mars 2015

merci beaucoup pour les conseils, j'y regarde dés que possible, je vais m'obstiner, car je ne suis pas encore fatigué.

@+
Messages postés
175
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
8 mars 2015

bonsoir,
résultat des courses je ne sais pas si tout est bien correct mais cela fonctionne sans erreur sur IE, il n'y a plus que le condenser et le détaillé qui ne prennent pas en compte les sous-titres.
(c'est le voir() et nonvoir() qui coincent)
voici le résultat :

<HTML><HEAD><TITLE></TITLE>
<style>
p {font:12pt times;text-decoration:none; color:blue}
div {font:12pt; color: blue;margin-left:5pt;line-height:12px}
body {font:12pt;font-family:verdana;line-height:15px}
.SSTITRE {margin-left:60pt;font:12pt;font-family:verdana;line-height:15px}
CALQUE {margin-left:60pt}
.class1 {color : red}
.class2 { scrollbar-face-color: pink; scrollbar-shadow-color: pink; scrollbar-highlight-color: pink; scrollbar-3dlight-color: pink; scrollbar-darkshadow-color: pink; scrollbar-track-color: pink; scrollbar-arrow-color: pink; background-color:pink; border:1; font-family: arial; font-size: 2px; color: pink; text-decoration: none; }
.nonvu {visibility : hidden}
.vu {visibility : visible}
.drag{position:relative;cursor:hand;}
.bleu {color : blue}
.espace {line-height:8px}
</style>



<SCRIPT language= javascript type=text/javascript>
<!--
function affiche(a1,b1,l) {
if (a1.style.display =='') {
a1.style.display = 'none';
if (l== 1) {b1.src='./Img/tri.gif'; b1.alt='';}
}
else {
a1.style.display='';
if (l== 1) {b1.src='./Img/tridown.gif'; b1.alt='';}
}
}


-->
</SCRIPT>


<SCRIPT type=Text/JavaScript>
function voir(val){
for (var i=1; i<=val;i++)
(document.getElementById('a'+i).style.display ='inline')&&(document.getElementById('b'+i).style.display ='inline');
}</SCRIPT>


<SCRIPT type=Text/JavaScript>
function nonvoir(val){
for (var i=1; i<=val;i++)
(document.getElementById('a'+i).style.display ='none')&&(document.getElementById('b'+i).style.display ='none');
}</SCRIPT>


<SCRIPT>function changediv2(){
val = document.getElementById('nbr').value;
for (var x=1; x<=val;x++);
if (document.getElementById('a'+val).contentEditable =='true')
{document.getElementById('a'+val).contentEditable ='false';}
else
{document.getElementById('a'+val).contentEditable ='true'}}</SCRIPT>


<SCRIPT type=text/javascript>
function genere(nb)
{ for (var i=1;i<=nb;i++)
{ frm.innerHTML+="

1er SOUS TITRE
<COMMENT>/////SOUS SOUS TITRE 1////////</COMMENT>

Sous-titre
-
"; } }
</SCRIPT>


<SCRIPT type =text/javascript>
function generesous(nb,quant)
{for (var x= 1;x<=quant;x++);
{for (var i=1;i<=nb;i++);
{ document.getElementById('a'+nb,+quant).innerHTML+="

1er SOUS TITRE
<COMMENT>/////SOUS SOUS TITRE 1////////</COMMENT>

Sous-titre
-
"; }}}
</SCRIPT>
</HEAD>

<FORM name =frm>
Nbre/ref 1er rgNbre/ref 2eme rg
Genere 1er rgGenere 2eme rg

</FORM>



</HTML>
Messages postés
175
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
8 mars 2015

Bon, j'ai laissé des ; aprés des for car cela m'arrage de ne générer des sous-titres qu'un par un, mais cela veut dire que certain ne servent à rien. Pourtant quand je les enlève plus rien ne fonctionne ???.
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Amis du JOUR Bonjour...

<hr size= "2" width="100%">Je doute que cela marche, essaies en activant le débugger de IE...

<hr size="2" width="100%">Tout d'abord tu peux mettre toutes tes fonctions dans la même balise <SCRIPT>...</SCRIPT> cela va éclaircir ton code

<SCRIPT language=javascript type=text/javascript>
//-----------------------
function affiche(a1,b1,l){
...blabla...

}
//----------------
function voir(val){

...blabla...

}
//----------------
function nonvoir(val){

...blabla...

}
//-------------------
function changediv2(){

...blabla...

}
//-----------------
function genere(nb){

...blabla...

}
//---------------------------
function generesous(nb,quant){
...blabla...
}

</SCRIPT>

<hr size="2" width="100%">Plus de rigeur ne nuit pas
...
Apprend tout de suite la bonne écriture
exemple :

devient



...c'est rien mais si tu prends l'habitude tout de suite c'est mieux...

Une bonne indentation, donc lisibilité, dans les codes c'est 80% des PBs en moins...

<hr size ="2" width= "100%">N'hésites pas à utiliser la fonction alert (" valeur à afficher "); pour te rendre compte de la valeur des paramètres en cours d'excécution...
exemple :

//---------------------------

function generesous(nb,quant){
alert( "Nb " +nb +" Quant " +quant);
...blabla...


}

<hr size="2" width="100%">N'hésites pas à tester avant de faire la suite...

exemple :
//---------------------------
function generesous(nb,quant){
var Html="";
var Obj ;
for (var x =1;x<= quant;x++);
for (var i=1;i<=nb;i++);{

Obj
= document.getElementById('a'+quant);
if( Obj){
Html = " // La tu mets ton texte...
Obj.innerHTML += Html;
}
else
alert ( "
document.getElementById(a" +quant +") n'existe pas
");
}
}

<hr size ="2" width="100%">Il en veux est c'est ce qui compte...
Messages postés
175
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
8 mars 2015

meci beaucoup, je vais m'appliquer
@+