Autor Zpráva
smid83
Profil *
Ahoj Můžete mi někdo poradit? Má skript na střídání obrázků je perfektní funkční ale má to problém když jede jenom sám tak v pohodě funguje ale když chci aby na stránce jsem měl více takových obrázků tak se už nestřídá ani jeden zkoušel jsem i

přidat k
obrazek.src = obrazky[obr];
kodobrazek1.src = obrazky1To jsem udělal i v img name obrazek1

to všechno fungovalo když jsem tam měl dvě animace
ale problém je vtom že když už tam jsou nastavený 2 animace tak se tam nemůže na stránce objevit jen jedna jinak to taky nefunguje a to bych právě potřeboval aby to bylo nezávislí na sobě mám totiž stránky kde se mi obrázky střídají jednou se zobrazí méně a jednou více.
celí skript je zde

<script language="JavaScript" type="text/javascript">
obr = -1;
cas = 1000;
function animation(){
obrazky = ["a.gif","b.gif","c.gif"];
if (obr+1==obrazky.length) obr=0;
else obr++;
obrazek.src = obrazky[obr];
window.setTimeout('animation()',cas);
}
</script>
</head>
<body onLoad="animation()">
<img src="a.gif" name="obrazek">
Str4wberry
Profil
Nejjednodušší by asi bylo si vytvořit další funkce animation2, animation3 s takřka totožným obsahem, které budou animovat ty další obrázky.

Nicméně mnohem lepší by to bylo napsat universálněji. Tedy si například upravit tu funkci, aby jí šlo předat, co má animovat a jaké obrázky volit.
1Pupik1989
Profil
Ano, volba 2 bude asi nejlepší. Něco ve stylu:

function Animate(){
  this.container = arguments[0];
  this.src = arguments[1];
  this.i = 1;
};
Animate.prototype = {
  start:function(img){
    var that = this;
    this.t = setTimeout(function(){
      that.container.src = that.src[that.i];
      that.i++;
      if(that.i>=that.src.length){
        that.i = 0;
      }
      that.start();
    },1000);  
  },
  end:function(){
    clearTimeout(this.t);
  }
};

Vytvořit instanci a spustit.
smid83
Profil *
muže te mi tu variantu 2 napsat celý skript nějak tomu nerozumim kam a co vypsat kde vyplnit adresu obrázku atd


smid83:
kam dát adresu obrazek1,obrazek2,obrazek3.atd nebo složku ze který si to bude aou
tomaticky číst sám
1Pupik1989
Profil
Tak doufal jsem, že to jde vyčíst. Ještě opraveno, netuším proč jsem použil argumenty jako pole, když nebyly potřeba.

function Animate(image,sources){
  this.container = image;
  this.src = sources;
  this.i = 1;
};
Animate.prototype = {
  start:function(img){ //spuštění animace
    var that = this;
    this.t = setTimeout(function(){
      that.container.src = that.src[that.i];
      that.i++;
      if(that.i>=that.src.length){
        that.i = 0;
      }
      that.start();
    },1000);  
  },
  end:function(){ //ukončení animace
    clearTimeout(this.t);
  }
};


var obrazkovy_element = document.getElementById("obrazek"); //element img, v kterém se obrázek zobrazí
var adresy_obrazku = ["1.jpg","2.jpg","3.jpg","4.jpg"]; //url adresy obrázků

var animator = new Animate(obrazkovy_element,adresy_obrazku); //vytvoření instance
animator.start(); //spuštění
smid83
Profil *
Udělal jsem to přesně takhle ale nic nefunguje zapoměl jsem snad na něco?
<script language="JavaScript" type="text/javascript">
function Animate(image,sources){
  this.container = image;
  this.src = sources;
  this.i = 1;
};
Animate.prototype = {
  start:function(img){ //spuštění animace
    var that = this;
    this.t = setTimeout(function(){
      that.container.src = that.src[that.i];
      that.i++;
      if(that.i>=that.src.length){
        that.i = 0;
      }
      that.start();
    },1000);  
  },
  end:function(){ //ukončení animace
    clearTimeout(this.t);
  }
};
 
 
var obrazkovy_element = document.getElementById("obrazek"); //element img, v kterém se obrázek zobrazí
var adresy_obrazku = ["http://et6.xhamster.com/t/006/1_1759006.jpg","http://et6.xhamster.com/t/006/2_1759006.jpg","http://et.xhamster.com/t/006/3_1759006.jpg","http://et6.xhamster.com/t/006/4_1759006.jpg"]; //url adresy obrázků
 
var animator = new Animate(obrazkovy_element,adresy_obrazku); //vytvoření instance
animator.start(); //spuštění
</script>

<body onLoad="Animate()">
<img src="a.gif" name="obrazek"></body>
Chamurappi
Profil
Reaguji na smida83:
V proměnné obrazkovy_element nejspíš nic není, protože v době, kdy element podle ID hledáš, ještě neexistuje. Přesuň skript za <img>. (Obecně není moc užitečné mít skripty v <head>.)
smid83
Profil *
Vubec ti nerozumim mezi head to nemam mam to jenom co je zde napsané tak my napiš prosim tě jak to myslíš já se nějak v js neorientuju snažim se ten zbytek co jste mi neporadili složit z toho základu co jsem posla hned na začátku jinak nevim jak ho spustit


Tak chlapi tak vám děkuju už jsem na to přišel dal jsem <img src="a.gif"name="obrazek">hned uplně nazačátek apzměnil jsem jen name na id a už to funguje diky moc ale stejně nechápu proč se teda předdím muselo používat
<body onLoad="animation()">
<img src="a.gif" name="obrazek">
_es
Profil
smid83:
mezi head to nemam
Máš to nad značkou <body> tak to snáď je v elemente head - nie?

Vubec ti nerozumim
Čo je na vete „Přesuň skript za <img>.“ nezrozumiteľné?
smid83
Profil *
Ted jak uřž to jde tak to funguje i když je img před tim nebo zatím je to jedno
1Pupik1989
Profil
Ano, mělo by to být jedno, pokud se to spouští až v onloadu body. Hezčí je si ale funkce přesunout do externího dokumentu.
smid83
Profil *
Je promin máš pravdu musíš v tom mít to body já to nějak poplet ale prosimtmě porat mi ještě dál jsem do body
<body onLoad="Animate()">
<img src="a.gif" name="obrazek">
</body>
A nefunguje to nebo jak to mám pojmenovat?
1Pupik1989
Profil
Vytvoř si funkci třeba nastavAnimaci, která vytvoří objekt a spustí animaci.

<body onLoad="nastavAnimaci()">
<img src="a.gif" name="obrazek">
</body>

Ve funkci nastavAnimaci pak bude:
var animator = new Animate(obrazkovy_element,adresy_obrazku); //vytvoření instance
animator.start(); //spuštění

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: