Avatar billede para7 Nybegynder
09. marts 2009 - 11:25 Der er 5 kommentarer og
1 løsning

To slides skal køre på een gang

Jeg har fundet et slide script (Original from: http://brainerror.net/scripts/javascript/blendtrans/demo.html), jeg har forenklet. det virker fint, men nu vil jeg gerne have to slides kørende på samme side på samme tid. selv om jeg har ænderet alle id osv. kan jeg ikke få begge til at køre på een gang. Kun det sidste kører. Hvordan klarer vi det. Her er min kode. Kan paste indhold af .js filen også.

<br>
1. slideshow:
<SCRIPT src="blendimages.js" type=text/javascript></SCRIPT>
<SCRIPT type=text/javascript>
function init() {
blendImages('zeleznik2', 40, 1500, 'caption2');
}
window.onload = init;
</SCRIPT>
<STYLE type=text/css>
}
.blend IMG {    FILTER: alpha(opacity=0); opacity: 0; -moz-opacity: 0; -khtml-opacity: 0
}
</STYLE>
<DIV style="width: 300px; position: relative; height: 225px; border:0px solid black">
<DIV class=blend id=zeleznik2 style="position: absolute; left: 0px; top: 0px; width: 300px; height: 225px; overflow: hidden">
<IMG alt="Billed 1" src="1.jpg">
<IMG alt="Billed 2" src="2.jpg">
</DIV>
<div id="caption2" style="display:visible;position:absolute; z-index:200; top:6px; left:8px; width:300px; font-size:20px; color:#ffffff; font-style:italic"></div>
</DIV>

<br>
2. slideshow:
<SCRIPT src="blendimages.js" type=text/javascript></SCRIPT>
<SCRIPT type=text/javascript>
function init() {
blendImages('zeleznik3', 40, 1500, 'caption3');
}
window.onload = init;
</SCRIPT>
<STYLE type=text/css>
}
.blend IMG {    FILTER: alpha(opacity=0); opacity: 0; -moz-opacity: 0; -khtml-opacity: 0
}
</STYLE>
<DIV style="width: 300px; position: relative; height: 225px; border:0px solid black">
<DIV class=blend id=zeleznik3 style="position: absolute; left: 0px; top: 0px; width: 300px; height: 225px; overflow: hidden">
<IMG alt="Billed 1" src="1.jpg">
<IMG alt="Billed 2" src="2.jpg">
</DIV>
<div id="caption3" style="display:visible;position:absolute; z-index:200; top:6px; left:8px; width:300px; font-size:20px; color:#ffffff; font-style:italic"></div>
</DIV>
Avatar billede olebole Juniormester
09. marts 2009 - 12:38 #1
<ole>

Du kan enten dubblere alle variabler med et nyt navn - hvilket er temmelig bøvlet - eller du kan finde et script, der beregnet til at afvikle i flere instanser på samme side. I så fald skal du lede efter et script, der er objekt orienteret opbygget.

/mvh
</bole>
Avatar billede para7 Nybegynder
09. marts 2009 - 12:42 #2
Det her er ellers godt. Har prøvet andre. Hvordan kan jeg dublere variabler, synes jeg har gjort det i forvejen. Skal det gøres i .js filen?
Jeg kan selvfølgelig sætte iframe sider ind med hver deres script, og så vil det da virke.
Avatar billede olebole Juniormester
09. marts 2009 - 12:52 #3
Ja, du skal formentlig også ind i JS-filen. Men er du virkelig tilfreds med, som det ser ud i IE og Opera? Hos mig ligner testsiden, du linker til, noget, som aldrig har været meningen  =)
Avatar billede para7 Nybegynder
09. marts 2009 - 13:29 #4
Rigtignok vises ekstra billeder på demosiden i IE. der må mangle noget højdeangivelse i et div.
Jeg kan teste mit eget lettere modificerede script offline og det virker i firefox og chrome, men mest hensigtsmæssigt i IE. Det virker som det skal. Opera og Safari tester jeg normalt ikke med.

Jeg paster lige .js filens indhold ind. Kan du sige, hvad jeg kan gøre for at gøre det multifunktionelt? Ellers laver jeg iframes.
Avatar billede para7 Nybegynder
09. marts 2009 - 13:30 #5
/*
* Original from: http://brainerror.net/scripts/javascript/blendtrans/demo.html
*
* Edits by ASC:
*  - Removed unnecessary OO code that caused MSIE to choke
*  - Added pause between setting bg image and setting opacity to zero to
*    prevent MSIE image flash
*  - Increased opacity check argument to 103 for completely smooth fade
*
*/

//find next image
function nextImage(o) {
    do o = o.nextSibling;
    while(o && o.tagName != 'IMG');
    return o;
}

//find first image inside an element
function firstChildImage(o) {
   
    o = o.firstChild;
       
    while(o && o.tagName != 'IMG') {
        o = o.nextSibling;
    }
   
    return o;
}

//set the opacity of an element to a specified value
function setOpacity(obj, o) {

    obj.style.opacity = (o / 100);
    obj.style.MozOpacity = (o / 100);
    obj.style.KhtmlOpacity = (o / 100);
    obj.style.filter = 'alpha(opacity=' + o + ')';
}

//make image invisible and set next one as current image
function getNextImage(image) {
   
    if (next = nextImage(image)) {
    image.style.display = 'none';
    image.style.zIndex = 0;

    next.style.display = 'block';
    next.style.zIndex = 100;

    } else {
    //if there is not a next image, get the first image again
    next = firstChildImage(image.parentNode);
    }

    return next;
}

//set default values for parameters and starting image
function blendImages(id, speed, pause, caption) {

    if(speed == null) {
        speed = 30;
    }
   
    if(pause == null) {
        pause = 1500;
    }

    var blend = document.getElementById(id);

    var image = firstChildImage(blend);

    startBlending(image, speed, pause, caption);
}

//make image a block-element and set the caption
function startBlending(image, speed, pause, caption) {

    image.style.display = 'block';

    if(caption != null) {
    document.getElementById(caption).innerHTML = image.alt;
    }

    continueFadeImage(image, 0, speed, pause, caption);
}

// ASC: copied from http://www.sean.co.uk/a/webdesign/javascriptdelay.shtm
function pausecomp(millis) {
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); }
    while(curDate-date < millis);
}

//set an increased opacity and check if the image is done blending
function continueFadeImage(image, opacity, speed, pause, caption) {

    opacity = opacity + 3;

    if (opacity < 103) {

    setTimeout(function() {fadeImage(image, opacity, speed, pause, caption)}, speed);

    } else {
    //if the image is done, set it to the background and make it transparent
    image.parentNode.style.backgroundImage = "url("+image.src+")";

    // ASC: pause 1sec here to prevent MSIE image flash ...
    var paws=pause-1000;
    if (paws < 0 ) {
        paws = 0;
    }
    pausecomp(1000);

    setOpacity(image,0);
    //get the next image and start blending it again
    image = getNextImage(image);
    setTimeout(function() {startBlending(image, speed, pause, caption)}, paws);       
    }
}

//set the opacity to a new value and continue the fading
function fadeImage(image, opacity, speed, pause, caption) {
    setOpacity(image,opacity);
    continueFadeImage(image, opacity, speed, pause, caption);
}
Avatar billede para7 Nybegynder
10. marts 2009 - 08:24 #6
Nå, men min løsning var så at indsætte iframes med scriptet.
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