begin process at 2012 05 29 22:38:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Function & Méthodes

 > 

Random... oui mais...


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

Random... oui mais...

vendredi 25 mars 2011 à 16:45:09 | Random... oui mais...

momongana




Bonjour à tous,
Je voudrais me servir d'un script tout pret, mais je voudrais le transformer, et je n'y arrive pas...
Voici la fonction à modifier :
function AffichePub()
{
if(!affiche)
{
numimage= Math.round(Math.random()*(ejs_banurl.length-1));
document.write ('<A HREF="#" onClick="window.open(ejs_banurl[numimage],\'_blank\')"><IMG SRC="' + ejs_banimageUrl[numimage] + '" BORDER=0 NAME=ejs_banpub></A>')
affiche = true;
}
else
{
if(numimage == (ejs_banurl.length-1))
numimage = 0;
else
numimage++;
document.ejs_banpub.src=ejs_banimageUrl[numimage];
}
setTimeout("AffichePub()",5000);
}

AffichePub();

Ce que je recherche sachant qu'il y à 20 bannieres à "tirer" au hasard.
Lors de l'ouverture d'un site, SA banniere apparait dans un cadre en haut de la page, puis affiche toutes les 5 secondes une autre bannière, qui si cliquée ouvrira le site de la bannière.
Jusque là, pas de problème en remplaçant: numimage= Math.round(Math.random()*(ejs_banurl.length-1));
par numimage= 1 (1er site)
et numimage++; par numimage= Math.round(Math.random()*(ejs_banurl.length-1));
Mon problème c'est que je ne voudrais pas qu'une bannière s'affiche deux fois avant que les 20 bannières s'affichent toutes... Une fois toutes affichées, remise à zéro et on recommence... Me suis-je bien fait comprendre ?
En définitive je désire tirer une banniere au hasard à chaque passage, sans pouvoir tirer deux fois la même avant que les 20 bannières soient passées...
D'avance, merci de votre aide.

________________
L'homme est un apprenti. La douleur est son maitre. Et nul ne se connait. Tant qu'il n'a pas souffert.
Alfred de Musset.
vendredi 25 mars 2011 à 20:03:21 | Re : Random... oui mais...

Videopac

Bonsoir momongana,

Je pense que le plus simple est de remplacer numimage par un tableau (pense à le déclarer) qui contiendra toutes les valeurs de 0 à n-1. Pour créer ce tableau, utilise 2 boucles for(;;) :
- une première pour initialiser la liste :
for (i=0;i<n;i++) {liste[i]=0;}
- une pour mélanger les éléments par permutations (minimum n/2) :
for (i=0;i<(n/2);i++) {
x1=Math.floor(Math.random*n);
x2=Math.floor(Math.random*n);
temp=liste[x1];
liste[x1]=liste[x2];
liste[x2]=temp;
}
Dans ton cas, n=20 et il faut remplacer ejs_banimageUrl[numimage] par ejs_banimageUrl[liste[numimage]]. Si tu trouve que les éléments ne sont pas suffisamment mélangés, augmente n/2 ... Tu peux re-mélanger le tableau à chaque fois que tu réinitialise ta variable numimage.

J'espère que les explications sont assez claire...
vendredi 25 mars 2011 à 23:12:16 | Re : Random... oui mais...

Videopac

Oups ... Je viens de voir qu'il y a une petite faute de frappe. C'est :
for (i=0;i<n;i++) {liste[i]=i;} bien sûr
J'ai fait ça dans l'urgence tout à l'heure et je n'avais pas eu le temps de me relire. Désolé.
samedi 26 mars 2011 à 04:21:24 | Re : Random... oui mais...

momongana




Bonjour et merci de ta réponse hyper rapide...
Le hic, c'est que je suis un jeune homme de 67 ans et que je suis nul en programmation de ce type...
Ou dois-je placer ton code dans le mien, en remplacement de quoi ?
Encore merci
Cordialement
samedi 26 mars 2011 à 14:41:18 | Re : Random... oui mais...

Videopac

Je te propose de modifier en le remplaçant par ça :

var liste=new Array(ejs_banurl.length);

function melangeListe()
{
var i,x1,x2,temp;
for (i=0;i<ejs_banurl.length;i++)
{
x1=Math.floor(Math.random()*ejs_banurl.length);
x2=Math.floor(Math.random()*ejs_banurl.length);
temp=liste[x1];
liste[x1]=liste[x2];
liste[x2]=temp;
}
}

function AffichePub()
{
var i;

if(!affiche)
{
for (i=0;i<ejs_banurl.length;i++) liste[i]=i;
melangeListe();
numimage= 0;
document.write ('<A NAME=test HREF="#" onClick="window.open(ejs_banurl[liste[numimage]],\'_blank\')"><IMG SRC="' + ejs_banimageUrl[liste[numimage]] + '" BORDER=0 NAME=ejs_banpub></A>')
affiche = true;
}
else
{
if(numimage == (ejs_banurl.length))
{
melangeListe(); // pour remélanger à chaque tour
numimage = 0;
}else
document.ejs_banpub.src=ejs_banimageUrl[liste[numimage]];
numimage++;
}
setTimeout("AffichePub()",5000);
}

AffichePub();

Ça devrait fonctionner. Dans le for de la fonction melangeListe, j'ai mis 'ejs_banurl.length' au lieu de 'ejs_banurl.length/2' (algo d'hier) pour avoir un meilleur mélange sans trop ralentir le script.

Cordialement
samedi 26 mars 2011 à 18:54:25 | Re : Random... oui mais...

momongana




Bonsoir,
Je ne sais trop comment te remercier de tant de compréhension...
J'ai mis ton algo à la place du mien....
Effectivement à chaque nouvelle ouverture la banniere change... mais c'est tout.
Ce que j'aimerais c'est qu'à l'ouverture du site, la bannière de ce site soit affichée puis toutes les 5 secondes une autre bannière s'affiche à sa place et ainsi de suite jusqu'à ce que les 20 bannières s'affichent toutes sans qu'il y ai deux fois la même... Une fois les 20 bannière affichées on recommence à zéro.
Si je tiens à ce que les 19 bannières aient un tirage aléatoire, c'est pour ne pas "brimer" les dernières bannières qui seraient toujours dernières... et si on quitte le site avant, on ne les verraient jamais !
Une idée de ce que je veux faire : www.pub04.com (mon bigot sur ce site...)
Mille merci !
Cordialement
Raymond
samedi 26 mars 2011 à 19:03:31 | Re : Random... oui mais...

momongana




Petite précision...
En ce moment et avec mon ancien code, ça fonctionne, a part que la deuxième banniere affichée est chaque fois la même... En cliquant sur une bannière on arrive bien sur le site demandé, et les bannières tournent...
Peut-être une petite rectif quelque part...
A+ et merci encore.
samedi 26 mars 2011 à 21:56:18 | Re : Random... oui mais...

Videopac

Bonsoir,
A mon avis, mon script fonctionne correctement. Le problème vient du fichier HTML qui l'appelle dans la ligne :
<script language="javascript" src="Enfin,%20de%20la%20Pub%20intelligente%20%21_fichiers/banniere20.js"></script><a href="#" onclick="window.open(bansite[numimage],'_blank')"><img src="Enfin,%20de%20la%20Pub%20intelligente%20%21_fichiers/Image2.jpeg" name="banpub" border="0">
tout ce qui suit la balise </script> est en trop car créé par le script. C'est probablement pour ça que la deuxième bannière est toujours la même. En tout cas, on se retrouve avec deux images portant le même nom (banpub), d'où un probable conflit...
dimanche 27 mars 2011 à 15:33:36 | Re : Random... oui mais...

momongana




Bonjour,
Dans mon code il y a ceci :
<script language="JavaScript"><!--
var i=0; var j=0;
var msg = "Enfin, de la Pub intelligente !";
var run;
function scroll_control() {
scroll_msg();
if (j<msg.length) {clearTimeout(run);}
j++;
run=setTimeout('scroll_control()',250);
}
function scroll_msg() {
var graal = msg.substring(0 ,i);
document.title = graal;
i++;
}
scroll_control();
-->
</script>

</head>

<body>
<div style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100% ;z-index: -10">
<img src="http://www.pub04.com/images/FondPage.jpg"alt="Fond de la page" />
</div>
<center>
<div style="position: relative; width: 900px; height: 900px; z-index: 2">
<script language="javascript" src="http://www.pub04.com/Bannieres/banniere20.js"></script>
Je ne comprends pas ce que vous me dites plus haut avec :
<script language="javascript" src="Enfin,%20de%20la%20Pub%20intelligente%20%21_fichiers/banniere20.js"></script><a href="#" onclick="window.open(bansite[numimage],'_blank')"><img src="Enfin,%20de%20la%20Pub%20intelligente%20%21_fichiers/Image2.jpeg" name="banpub" border="0">
Ou êtes vous allé "pécher" ce bout de code ?
Je contibue à chercher, mais ce n'est pas évident...
Merci quand même de votre concours...
Cordialement
Raymond
dimanche 27 mars 2011 à 17:09:58 | Re : Random... oui mais...

Videopac

Bonjour,

Effectivement, j'ai zappé le fait qu'il faut ouvrir la bannière du site avant les autres. Mais la partie que tu demandais (aléatoire qui balaie toutes les images avant de recommencer un cycle) fonctionne correctement (avant de poster hier, j'ai testé mon script avec des photos perso et des liens bidons).
Suite à ton souci, j'ai enregistré ta page en local pour pouvoir modifier le code : c'est là que firefox m'a inséré la portion de code incriminée. Effectivement, elle n'apparaît pas en affichant le code source. Donc désolé que le problème ne vienne pas de là car de mon côté, ça fonctionne correctement sur IE 6 et Firefox 3.6.16...
Est-ce un problème si la bannière du site est la dernière image ??? A priori, non... Dans ce cas, dans ton fichier banniere20.js remplace tout ce qui suit 'affiche=false;' par :
var liste=new Array(bansite.length);

function melangeListe()
{
var i,x1,x2,temp;
for (i=0;i<bansite.length;i++)
{
x1=Math.floor(Math.random()*(bansite.length-1));
x2=Math.floor(Math.random()*(bansite.length-1));
temp=liste[x1];
liste[x1]=liste[x2];
liste[x2]=temp;
}
}

function AffichePub()
{
var i;

if(!affiche)
{
for (i=0;i<bansite.length;i++) liste[i]=i;
// melangeListe(); // mettre ici pour mélanger une seule fois
numimage= bansite.length-1;
document.write ('<A HREF="#" onClick="window.open(bansite[liste[numimage]],\'_blank\')"><IMG SRC="' + banimageUrl[liste[numimage]] + '" BORDER=0 NAME=banpub></A>')
numimage++;
affiche = true;
}
else
{
if(numimage == (bansite.length))
{
melangeListe(); // pour remélanger à chaque tour
numimage = 0;
}
document.banpub.src=banimageUrl[liste[numimage++]];
}
setTimeout("AffichePub()",5000);
}

AffichePub();

En local, sur le fichier pris depuis ton site, ça fonctionne exactement comme tu veux sous IE et Firefox : image 'la pub des indépendants' puis les 20 autres aléatoirement avant de recommencer.

Bon courage (surtout si ça ne marche pas car là je sèche).
Nota : sous Firefox, il y a une console d'erreur dans le menu Outils qui peux t'indiquer l'emplacement d'une erreur dans un script...

1 2

Cette discussion est classée dans : affiche, math, random, ejs, numimage


Répondre à ce message

Sujets en rapport avec ce message

Onclick + math.random [ par juki_webmaster ] Bonjour, Je suis en train d'ameliorer toutes mes protections par images (anti robot), je voulais proposer aux visiteurs de changer/mettre a jour l'im Flash Aléatoire [ par XCONTROL90 ] Bonjour je cherche un code depuis 2 jours pour charger de manière aléatoire des anims flash au même titre que des images. Mais je trouve pas !! j'ai u réaliser une boucle pour obtenir plusieurs résultat ... [ par popy29 ] bonjour,je cherche à obtenir plusieurs  résultats ou n résultat différents à partir d'une fonction mais je ne trouve pas comment faire pour la boucle. Effet neige a l'invers [ par lnazcal ] Bonjour,Comment le sujet le dit si bien je cherche un javascript qui fasse un effet boules dans un verre de cola.Je me suis dit que il faudré changer Ordre d'affichage dans des listes [ par cubhyphen ] Hello, dans le cadre de mon travail, j'ai du développer un site intranet. Je n'ai acces a aucun logiciel de creation et ce n'est quasi que des fichier Probleme rotation de bannieres [ par NiXiT ] Bonjour, je cherche a faire tourner mes bannieres automatiquement toutes les 10 sec. Voici le code que j'ai fait : fichier pub.js : Code: banner J'ai une colle : comment actualiser des infobulles ? [ par feuh7 ] Bonjour à tous, Je suis webmaster d'un site et 'léger' informaticien mais, cette fois je suis au pied du mur. Je m'explique : - j'ai instauré un sys Pb d'infobulle presque résolu [MAJ 20-09-2005] [ par feuh7 ] (MAJ 20-09-2005) Bonjour à tous, Je suis webmaster d'un site et 'léger' informaticien mais, cette fois je suis au pied du mur. Je m'explique : - j' Débutant 100%....Select?? [ par jnbrunet ] Salut,voici le code de mon select:    Choisissez un objet    <option value="1"& Pb d'actualisation [ par feuh7 ] Bonjour, Je m'occupe du site http://www.laprod.fr et j'ai mis en place un systeme de News convivial. Des images tournent, pointent vers un lien etc..


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 : 0,827 sec (4)

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