Przeczytaj uważnie jeszcze raz mojego posta.
Mam taki kod:
alert($(idBaneru).find('a.b1').find('img').height())
<a href="http://www.onet.pl" name=odnosnik> <img width="1000px" alt="Baner" src="banertop.jpg"> <a href="http://www.o2.pl" name=odnosnik> <img width="1000px" alt="Baner" src="banertop2.jpg"> <a href="http://www.o2.pl" name=odnosnik> <img width="1000px" alt="Baner" src="banertop3.jpg">
Attr('height') daje w tym przypadku to samo co powywszy kod czyli NULL, jak zamieniam na:
alert($(idBaneru).find('img').height())
Działa poprawnie, ale jestem ciekawy którego z banerów pobrałem dane?
Edit:
Przed wszystkim oczywiście mam jeszcze:
$(idBaneru).find("a").each(function(i)
{
var top=(wysokoscBaneru+odstepBaneru)*i
$(this).addClass('b'+i).css('top',top+'px')
})
Edit2:
Już wiem - zła kolejność
Edit3:A więc mój pomysł na sprawienie sobie rotatora trochę nie wypalił, najpierw pokażę kod:
Js:
//Urzywaj wyłącznie liczb naturalnych, parzystych i z oznaczonego zbioru!
//Czas w jakim baner stoi (x-x)
var czasPrzestoju=1000
//Czas trwania animacji - jeden cykl (10-x)
var czasAnimacji=10
//Ilość pixeli przemieszczonych w ciągu jednego cyklu (1-2)
var iloscPixeli=1
//Wysokosc banera (x-x)
var wysokoscBaneru=50
//Odstep pomiegdzy banerami (x-x)
var odstepBaneru=6
//Przyśpieszenie animacji gdy zostaje wyzerowana (1-2)
var przyspieszenieAnimacji=1
$(document).ready(function()
{
baner('#baner')
baner('#baner2')
baner('#baner3')
});
function baner(idBaneru)
{
wysokoscBaneruP=wysokoscBaneru/iloscPixeli
odstepBaneruP=odstepBaneru/iloscPixeli
$(idBaneru).find("a").each(function(i)
{
var top=(wysokoscBaneru+odstepBaneru)*i
$(this).addClass('b'+i).css('top',top+'px')
})
cukl(idBaneru,0);
}
function cukl(idBaneru,cykl)
{
cykl++
for(i=0;$(idBaneru).find('a.b'+i).css('top')!=undefined;i++)
var ilosc=i+1
if(ilosc>1)
{
if(cykl<ilosc)
{
setTimeout('przesuniecieUp("'+idBaneru+'",0,'+cykl+')',czasPrzestoju)
}
else
{
ilosc=ilosc*2-1
if(cykl<ilosc)
{
setTimeout('przesuniecieDown("'+idBaneru+'",0,'+cykl+')',czasPrzestoju)
}
}
}
}
function przesuniecieUp(idBaneru,przesuniecie,cykl)
{
for(i=0;$(idBaneru).find('a.b'+i).css('top')!=undefined;i++)
{
top=parseInt($(idBaneru).find('a.b'+i).css('top'))
top=top-iloscPixeli
$(idBaneru).find('a.b'+i).css('top',top+'px')
}
przesuniecie++
if(przesuniecie<wysokoscBaneruP+odstepBaneruP)
setTimeout('przesuniecieUp("'+idBaneru+'",'+przesuniecie+','+cykl+')', czasAnimacji)
else
cukl(idBaneru,cykl)
}
function przesuniecieDown(idBaneru,przesuniecie,cykl)
{
for(i=0;$(idBaneru).find('a.b'+i).css('top')!=undefined;i++)
var ilosc=i
for(i=0;$(idBaneru).find('a.b'+i).css('top')!=undefined;i++)
{
top=parseInt($(idBaneru).find('a.b'+i).css('top'))
top=top+iloscPixeli*ilosc*przyspieszenieAnimacji
$(idBaneru).find('a.b'+i).css('top',top+'px')
}
przesuniecie++
if(przesuniecie<(wysokoscBaneruP+odstepBaneruP)/przyspieszenieAnimacji)
setTimeout('przesuniecieDown("'+idBaneru+'",'+przesuniecie+','+cykl+')', czasAnimacji)
else
cukl(idBaneru,0)
}
Css:
*
{
margin:0px;
padding:0px;
border-width:0px;
}
#body
{
margin:100px auto;
width:990px;
}
.baner
{
width:1000px;
height:50px;
overflow: hidden;
position: relative;
}
.baner a
{
display:block;
position: absolute;
}
Html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <link href="style.css" type="text/css" rel="stylesheet"> <script src="http://www.a.cmsss.pl/admin/js/1=jquery.js" type="text/javascript"></script>
<div id="baner" class="baner"> <a href="http://www.onet.pl" name=odnosnik> <img width="1000px" alt="Baner" src="banertop.jpg"> <a href="http://www.o2.pl" name=odnosnik> <img width="1000px" alt="Baner" src="banertop2.jpg"> <a href="http://www.o2.pl" name=odnosnik> <img width="1000px" alt="Baner" src="banertop3.jpg">
I mam do tego dwa pytania:
1. Dlaczego dziadziała pod innymi przeglądarkami niż FF?
2. Wiem, że przy większej ilości banerów skrypt zakatuję przeglądarkę więc prosił bym o jakieś naprowadzenie jak powinno to wyglądać?