begin process at 2012 05 30 03:11:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

Variable et boucle JS : sans succès...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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

Membre Club
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

Membre Club
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

Membre Club

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales