Accueil > Forum > > > > Variable et boucle JS : sans succès...
Variable et boucle JS : sans succès...
mercredi 9 juin 2010 à 09:59:29 |
Variable et boucle JS : sans succès...

rhom138
|
Bonjour,
Débutant en javascript, j'ai un souci avec un script que je n'arrive pas à faire fonctionner correctement, pour une raison qui au bout d'une nuit m'échappe... Tout de suite le code du script :
<script type="text/javascript">
function afficher_news(id){
var x = id;
do{
x--;
new Effect.DropOut('news' + x);
}while(x >= 0);
new Effect.BlindDown('news' + id);
}
</script>
Pour l'explication : j'ai un système de news de la façon suivante. Les news sont récupérées dans la base de données, puis listées seulement avec leur titre. Quand on clique sur l'un des titres, la news s'affiche au dessus dans une div adaptée. Quand on clique ensuite sur une autre news, elle prend la place de la précédente dans la div. Problème : quand j'essaye d'afficher une nouvelle news dont l'ID (correspondant à celui de la BDD) est plus grand que celle affichée, ça coince puisqu'elle s'affiche sous la news dont l'ID est inférieure, et non dessus. Je suis peut-être pas très clair, mais en gros, je veux un script ou quelque chose permettant, en cliquant à nouveau sur un lien, d'effacer toutes les news qui peuvent être présentes pour afficher la nouvelle.
Les deux effets correspondent à des effets de Sciptaculous, le souci ne vient pas d'eux. Le problème vient de ma variable x ou de ma boucle puisque quand je les ajoute, plus rien ne s'affiche en cliquant sur les titres de news, et aucun message d'erreur n'apparait.
Si quelqu'un voit d'où vient le problème... merci d'avance ! 
|
|
mercredi 9 juin 2010 à 20:05:39 |
Re : Variable et boucle JS : sans succès...

PetoleTeam
|
Bonjour,
je dois avouer que je n'ai pas tout compris, mais as tu essayé de décrémenter après le lancement de la fonction BlindDown
Code Javascript : function afficher_news(id) {
var x = id;
do {
new Effect.DropOut('news' + x);
x--;
} while (x >= 0);
new Effect.BlindDown('news' + id);
}
;O)
|
|
vendredi 11 juin 2010 à 02:56:26 |
Re : Variable et boucle JS : sans succès...

rhom138
|
Malheureusement oui...
En réalité la décrémentation au départ, qui certes n'est pas du meilleur effet, était pour tester autre chose que var x = id - 1; pour que la news que je veux afficher ne se retrouve pas dans cette partie du script. Mais ça ne marchait pas non plus.
En fait, dès qu'il y a la boucle, ça ne marche plus. Pourtant elle n'est pas vraiment compliquée, et je ne vois pas ce qui peut la faire échouer... surtout sans aucun message d'erreur... 
|
|
vendredi 11 juin 2010 à 18:42:20 |
Re : Variable et boucle JS : sans succès...

PetoleTeam
|
Bonjour,
Dans ta boucle il s'ensuit une erreur car tu décrémentes x avant de l'utiliser pour l'effet, donc si id = 0 alors tu tentes d'accéder à news_-1 et ça plante... c'est d'abord un problème de logique.
reprenons ton problème à la racine, comme le disait Voltaire...
Ce que tu souhaites faire c'est caché les news affichées et afficher celle cliquée.
Au départ elles sont toutes cachées.
Donc il faut parcourir TOUTES les news et appliquer à celle que l'on doit cacher l'effet, ATTENTION celui ci est réversible donc si on l'applique une première fois le 2nd effet, BlindDown, sera foireux...
on va utiliser la boucle while(condition){ ...instruction...} plutôt que la do...
cela va donner
Code Javascript : //---------------------------
function afficher_news( num_){
var Num = 0; // indice de la premiere news
//-- test si objet existe, cela met fin à la boucle
while(( Obj = $( 'news_' +Num))){
//-- On traite que les non concernes
if( Num != num_)
new Effect.DropOut('news_' +Num);
//-- au suivant
Num++;
}
//-- On affiche le concerne
new Effect.BlindDown( 'news_' +num_);
}
je ne sais pas si c'est le résultat que tu attends mais au moins il se passera quelque chose ...
;O)
|
|
vendredi 11 juin 2010 à 22:24:35 |
Re : Variable et boucle JS : sans succès...

rhom138
|
Il se passe effectivement quelque chose, on avance !
Il affiche les news, alors qu'il ne le faisait même plus jusque là, mais il n'efface par contre toujours pas les autres qui se calent derrière (celles qui ont un ID supérieur, autrement dit celles qui sont plus récentes).
En fait, il fait la même chose que quand je mettais seulement l'effet BlindDown, sans boucle pour effacer quoique ce soit...
Ça parlera peut-être plus avec la page : http://www-test.int-evry.fr/bde/news.php
En tous les cas, merci déjà pour ces explications !
|
|
samedi 12 juin 2010 à 10:20:51 |
Re : Variable et boucle JS : sans succès...

PetoleTeam
|
Bonjour,
vu l'arbre en boule!!!!
dans tes pages le ID news ne vont de à 0 et n, mais de x à x+n, d'ou la boucle ne s'effectue pas.
Il y a plusieurs solutions
- celle d'initialiser, en PHP, la variable Num dans la fonction, avec la valeur la plus faible de l' ID.
- ou celle de parcourir vers le haut à partir du numéro passé, puis un parcours vers le bas, ou inversement.
pour cette dernière solution la fonction devient
Code Javascript : //---------------------------
function afficher_news( num_){
//-- Recherche descendante
var Num = num_ -1;
while((Obj=$( 'news_' +Num))){
new Effect.DropOut('news_' +Num);
Num--;
}
//-- Recherche montante
Num = num_ +1;
while((Obj=$( 'news_' +Num))){
new Effect.DropOut('news_' +Num);
Num++;
}
//-- On affiche le concerne
new Effect.BlindDown( 'news_' +num_);
}
peut être plus simple d'initialiser direct avec le PHP...
;O)
|
|
dimanche 13 juin 2010 à 00:27:55 |
Re : Variable et boucle JS : sans succès...

rhom138
|
Merci ! En plus je comprends les erreurs précédentes et ce qu'il est sensé se passer à chaque fois, super !
Par contre... oui, s'il y avait pas de par contre, ça serait pas marrant.
J'ai opté pour l'initialisation PHP. Mais il ne fonctionne que quand j'initialise avec l'ID le plus bas de la page actuelle. Je ne peux donc pas le faire comme ça pour chacune des pages. Ca doit pas etre très clair, mais en retournant sur la page, tu peux voir que les 5 news page 1 fonctionne bien, mais les pages suivantes, pas du tout...
PS : j'ai changé les effets et mis en setTimeout parce que sinon il faisait des choses toutes moches toutes bizarres, comme s'il effaçait et affichait les news en même temps.
Merci encore pour ton aide constructive !
|
|
dimanche 13 juin 2010 à 07:53:38 |
Re : Variable et boucle JS : sans succès...

PetoleTeam
|
Bonjour,
J'ai opté pour l'initialisation PHP
sage décision...
que les 5 news page 1 fonctionne bien, mais les pages suivantes
je vois aussi que le code ne change pas, on a toujours
var Num = 44; // indice de la premiere news
...et ce n'est pas un problème de cache.
j'ai changé les effets et mis en setTimeout
c'est ton choix, l'égout et les couleuvres!!! Par contre pour le setTimeout une bonne syntaxe est
Code Javascript : window.setTimeout( function(){ affichage('news' +num)}, 1);
jettes un coup d'oeil sur la Console d'erreurs par exemple
;O)
|
|
Cette discussion est classée dans : script, boucle, variable, id, news
Répondre à ce message
Sujets en rapport avec ce message
Récupérer la valeur d'une variable [ par milouchouchou ]
Bonjour tout le mondeDans le but d'améliorer les stats de mon site, j'aimerais pouvoir récupérer la valeur d'un script (élémentaire, mais je n'y arriv
declaration de variable [ par piwu ]
j'ai un script assez bete qui permet d'afficher du texte a un endroit dans une page sur un rollover d'un lien. Cepedant le script ne marche pas sous m
réutilisation du code Javascript - IE vs Ns ?! [ par husleagd ]
Bonjour à tous,J'ai un code qui marche bien dans IE, et Konqueror mais pas dans Netscape7.1 sous Linux.D'abord voilà le code: ..... <script language="
Récupérer une variable php en java [ par BioLo ]
Bonjour, voilà j'ai déclaré une variable en php et je souhaiterais m'en servir dans mon code java juste après le code php ... Mais je sais pas comment
Problème de variable [ par mightteam ]
Bonjour ,Alors voila j'ai un petit soucis :J'ai crée une fonction en javascript sensée changé la couleur de mon tableau en fonction de la couleur que
récupération de la variable d'URL [ par spoutniks ]
Bonjour petit probleme voici un script qui fonctionne bien pour récupérer une variable dans un URL, simplement comment faire, pour appeler ce script s
Rationaliser une fonction... [ par Grand Mamamouchi ]
Bonjour !j'ai ecrit un script qui produit un effet de generique de film (le texte s'evanouit vers le haut et vers le bas de la fenetre). Il fait exact
Inclure le contenu d'une page web dans une variable [ par Evangun ]
Bonjour à tous,je cherche à inclure le code intégral d'une page web dans une variable. J'ai trouvé la fonction ci-dessous sur le site, mais elle me re
Script en boucle automatique [ par shadow125 ]
Bonsoir,dépité que Ifrance est changé sa pub ( reload toutes les x sec ), j'ai décidé de la contrer :)Alors voici mon idée pour tuer cette pub :Cette
Transmettre une variable à un script externe [ par gyome314 ]
Hello les jeunes !!!J'ai un petit problème avec un script (pas très propre je l'avoue), et pour cause, il fonctionne sous IE mais pas sous FireFox.Con
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|