Avatar billede zybe Nybegynder
31. marts 2008 - 08:58 Der er 11 kommentarer og
1 løsning

Tilfældigt banner - 5 stk

Hej

Står og mangler et script der kan vise 5 billeder tilfældigt ud fra en liste med f.eks. 20 billeder. Det script jeg har nu tjekker ikke for at samme billede kan vises på samme tid.

Jeg bruger i øjeblikket dette script:

-------------------------------------------
bannerpics=new Array;
bannerurls=new Array;

bannerpics[1]="/Files/System/images/billede1.gif";
bannerurls[1]="http://xxxxx.dk";

bannerpics[2]="/Files/System/images/billede2.gif";
bannerurls[2]="http://xxxxx.dk";

bannerpics[3]="/Files/System/images/billede3.gif";
bannerurls[3]="http://xxxxx.dk";

bannerpics[4]="/Files/System/images/billede4.gif";
bannerurls[4]="http://xxxxx.dk";

bannerpics[5]="/Files/System/images/billede5.gif";
bannerurls[5]="http://xxxxx.dk";

bannerpics[6]="/Files/System/images/billede6.gif";
bannerurls[6]="http://xxxxx.dk";

bannerpics[7]="/Files/System/images/billede7.gif";
bannerurls[7]="http://xxxxx.dk";

bannerpics[8]="/Files/System/images/billede.gif";
bannerurls[8]="http://xxxxx.dk";

function VisSponsor() {

num = Math.floor ( Math.random() * bannerpics.length );

document.write("<a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' alt='" + bannerurls[num] + "'>");
document.write("</a>");
}

function ShowBanner() {

num = Math.random();
num = 1 + ( num * ((bannerpics.length - 1)-1));
num = Math.round(num);

document.write("<div style='width: 160px; height: 33px; margin: 5px 0px 10px 0px; text-align: center;'><a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' ");
document.write("alt='" + bannerurls[num] + "'>");
document.write("</a></div>");
}
---------------------------------------------

som ligger en en fil der hedder "bannerrotate.js" i selve htmlfilen ligger dette som viser selve bannerne:

---------------------------------------------
                <script src="Files/System/bannerrotate.js" type="text/javascript" language="javascript"></script>
           
<script type="text/javascript">
ShowBanner();
ShowBanner();
ShowBanner();
ShowBanner();
ShowBanner();
</script>
-----------------------------------------------

Håber der er nogen der kan hjælpe til at rette lidt i scriptet, eller hjælpe mig med noget nyt...
Avatar billede w13 Novice
31. marts 2008 - 12:50 #1
Du kan lige se, om dette virker:
-------------------------------------------------------
bannerpics=new Array;
bannerurls=new Array;

bannerpics[1]="/Files/System/images/billede1.gif";
bannerurls[1]="http://xxxxx.dk";

bannerpics[2]="/Files/System/images/billede2.gif";
bannerurls[2]="http://xxxxx.dk";

bannerpics[3]="/Files/System/images/billede3.gif";
bannerurls[3]="http://xxxxx.dk";

bannerpics[4]="/Files/System/images/billede4.gif";
bannerurls[4]="http://xxxxx.dk";

bannerpics[5]="/Files/System/images/billede5.gif";
bannerurls[5]="http://xxxxx.dk";

bannerpics[6]="/Files/System/images/billede6.gif";
bannerurls[6]="http://xxxxx.dk";

bannerpics[7]="/Files/System/images/billede7.gif";
bannerurls[7]="http://xxxxx.dk";

bannerpics[8]="/Files/System/images/billede.gif";
bannerurls[8]="http://xxxxx.dk";

var aShownBanners=new Array();
var iShownBanners=0;
function FindRandomBanner() {
    var i=Math.floor(Math.random()*bannerpics.length);
    var bFound=true;
    while(bFound){
        i=Math.floor(Math.random()*bannerpics.length);
        for(var u=0;u<aShownBanners.length;u++){
            bFound=(aShownBanners[u]==i);
            if(bFound)break;
        }
    }
    aShownBanners[iShownBanners++]=i;
    return i;
}

function VisSponsor() {

num = FindRandomBanner();

document.write("<a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' alt='" + bannerurls[num] + "'>");
document.write("</a>");
}

function ShowBanner() {

num = Math.random();
num = 1 + ( num * ((bannerpics.length - 1)-1));
num = Math.round(num);

document.write("<div style='width: 160px; height: 33px; margin: 5px 0px 10px 0px; text-align: center;'><a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' ");
document.write("alt='" + bannerurls[num] + "'>");
document.write("</a></div>");
}
Avatar billede zybe Nybegynder
31. marts 2008 - 13:05 #2
Virkede desværre ikke. Der var stadig dobbelt af nogle billeder :(
Avatar billede w13 Novice
31. marts 2008 - 13:54 #3
Hov, følgende:

function ShowBanner() {

num = Math.random();
num = 1 + ( num * ((bannerpics.length - 1)-1));
num = Math.round(num);

document.write("<div style='width: 160px; height: 33px; margin: 5px 0px 10px 0px; text-align: center;'><a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' ");
document.write("alt='" + bannerurls[num] + "'>");
document.write("</a></div>");
}

Skulle være:

function ShowBanner() {

num = FindRandomBanner();

document.write("<div style='width: 160px; height: 33px; margin: 5px 0px 10px 0px; text-align: center;'><a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' ");
document.write("alt='" + bannerurls[num] + "'>");
document.write("</a></div>");
}
Avatar billede zybe Nybegynder
31. marts 2008 - 14:08 #4
det får desværre browsere til at melde fejl. Bruger IE8 beta og får besked om at scriptet får browseren til at køre langsomt og derfor bliver afbrudt.
Avatar billede w13 Novice
31. marts 2008 - 14:10 #5
Hvor mange gange kalder du ShowBanner-funktionen?
Avatar billede w13 Novice
31. marts 2008 - 14:10 #6
Nå ja, ok, 5 gange kan jeg se. Hmm.
Avatar billede w13 Novice
31. marts 2008 - 14:12 #7
Følgende virker fint hos mig:
--------------------------------------
<html>
<head></head>
<body>

<script type="text/javascript">
var bannerpics=bannerurls=new Array();

bannerpics[1]="/Files/System/images/billede1.gif";
bannerurls[1]="http://xxxxx.dk";

bannerpics[2]="/Files/System/images/billede2.gif";
bannerurls[2]="http://xxxxx.dk";

bannerpics[3]="/Files/System/images/billede3.gif";
bannerurls[3]="http://xxxxx.dk";

bannerpics[4]="/Files/System/images/billede4.gif";
bannerurls[4]="http://xxxxx.dk";

bannerpics[5]="/Files/System/images/billede5.gif";
bannerurls[5]="http://xxxxx.dk";

bannerpics[6]="/Files/System/images/billede6.gif";
bannerurls[6]="http://xxxxx.dk";

bannerpics[7]="/Files/System/images/billede7.gif";
bannerurls[7]="http://xxxxx.dk";

bannerpics[8]="/Files/System/images/billede.gif";
bannerurls[8]="http://xxxxx.dk";

var aShownBanners=new Array();
var iShownBanners=0;
function FindRandomBanner() {
    var i=Math.floor(Math.random()*bannerpics.length);
    var bFound=true;
    while(bFound){
        i=Math.floor(Math.random()*bannerpics.length);
        for(var u=0;u<aShownBanners.length;u++){
            bFound=(aShownBanners[u]==i);
            if(bFound)break;
        }
    }
    aShownBanners[iShownBanners++]=i;
    return i;
}

function VisSponsor() {

num = FindRandomBanner();

document.write("<a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' alt='" + bannerurls[num] + "'>");
document.write("</a>");
}

function ShowBanner() {

num = Math.random();
num = 1 + ( num * ((bannerpics.length - 1)-1));
num = Math.round(num);

document.write("<div style='width: 160px; height: 33px; margin: 5px 0px 10px 0px; text-align: center;'><a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' ");
document.write("alt='" + bannerurls[num] + "'>");
document.write("</a></div>");
}

ShowBanner();
ShowBanner();
ShowBanner();
ShowBanner();
ShowBanner();
</script>

</body>
</html>
Avatar billede w13 Novice
31. marts 2008 - 14:15 #8
Ah, fejlen opstår kun ved VisSponsor(). Brug følgende kode:
-------------------------------------------
var bannerpics=bannerurls=new Array();

bannerpics[1]="/Files/System/images/billede1.gif";
bannerurls[1]="http://xxxxx.dk";

bannerpics[2]="/Files/System/images/billede2.gif";
bannerurls[2]="http://xxxxx.dk";

bannerpics[3]="/Files/System/images/billede3.gif";
bannerurls[3]="http://xxxxx.dk";

bannerpics[4]="/Files/System/images/billede4.gif";
bannerurls[4]="http://xxxxx.dk";

bannerpics[5]="/Files/System/images/billede5.gif";
bannerurls[5]="http://xxxxx.dk";

bannerpics[6]="/Files/System/images/billede6.gif";
bannerurls[6]="http://xxxxx.dk";

bannerpics[7]="/Files/System/images/billede7.gif";
bannerurls[7]="http://xxxxx.dk";

bannerpics[8]="/Files/System/images/billede.gif";
bannerurls[8]="http://xxxxx.dk";

var aShownBanners=new Array();
var iShownBanners=0;
function FindRandomBanner() {
    var i=Math.floor(Math.random()*bannerpics.length);
    var bFound=true;
    while(bFound){
        i=Math.floor(Math.random()*bannerpics.length);
        for(var u=0;u<aShownBanners.length;u++){
            bFound=(aShownBanners[u]==i);
            if(bFound)break;
        }
    }
    aShownBanners[iShownBanners++]=i;
    return i;
}

function VisSponsor() {

num = Math.floor(Math.random()*bannerpics.length);

document.write("<a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' alt='" + bannerurls[num] + "'>");
document.write("</a>");
}

function ShowBanner() {

num = Math.random();
num = 1 + ( num * ((bannerpics.length - 1)-1));
num = Math.round(num);

document.write("<div style='width: 160px; height: 33px; margin: 5px 0px 10px 0px; text-align: center;'><a title='" + bannerurls[num] + "' target='_blank' href='" + bannerurls[num] + "'>");
document.write("<img src='" + bannerpics[num] + "' width='88' border='0' ");
document.write("alt='" + bannerurls[num] + "'>");
document.write("</a></div>");
}
Avatar billede zybe Nybegynder
31. marts 2008 - 14:30 #9
ked af at sige det, men får stadig vist dobbelt billeder :( men den fejler ikke længere.
Avatar billede roenving Novice
31. marts 2008 - 16:47 #10
Hrm, jeg ville nok lave et simpelt array med de aktuelle numre, shuffle/blande det og så indsæte de relevante urls !-)

var bannerpics=bannerurls=new Array();

bannerpics[0]="/Files/System/images/billede0.gif";
bannerurls[0]="http://xxxxx.dk";

bannerpics[1]="/Files/System/images/billede1.gif";
bannerurls[1]="http://xxxxx.dk";

//osv. Bemæk, at js-arrays starter med 0, så det er opportunt at benytte det som start !-)

var nums = [];
for(i=0,im=bannerpics.length;im>i;i++)
  nums[nums.length] = i;

var tmp,actnum;
for(i=0,im=nums.length;im>i;i++){
  actnum = Math.floor(im*Math.random());
  tmp = nums[actnum];
  nums[actnum] = nums[i];
  nums[i] = tmp;
}

var parElm = document.getElementById("bannerDiv");
var pics = parElm.getElementsByTagName("img");
var lnks = parElm.getElementsByTagName("a");
for(i=0;5>i;i++){
  pics[i].setAttribute("src", bannerpics[nums[i]])
  lnks[i].setAttribute("href", bannerurls[nums[i]])
}

-- og så starter du med at have diven og links med meget mere på siden:

<div id="bannerDiv" style="/*de nødvendige styles*/">
  <a href=""><img src="" style="/*de nødvendige styles*/"></a>
  <a href=""><img src="" style="/*de nødvendige styles*/"></a>
  <a href=""><img src="" style="/*de nødvendige styles*/"></a>
  <a href=""><img src="" style="/*de nødvendige styles*/"></a>
  <a href=""><img src="" style="/*de nødvendige styles*/"></a>
</div>
Avatar billede roenving Novice
31. marts 2008 - 16:49 #11
-- hov, jeg glemte så at gøre opmærksom på, at indsættelsen af urls så skal foregå på onload eller efter koden til diven er skrevet til dokumentet !-)

-- og en bedre måde ville være at generere det serverside, så ingen problemer kan opstå !o]
Avatar billede w13 Novice
26. oktober 2010 - 12:24 #12
Tak for point! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester