Javascript immagine scroller non funziona con DOCTYPE
-
12-09-2019 - |
Domanda
Ho cercato il disco rete per qualche codice javascript che mi permette di scorrere automaticamente le immagini non-stop orizzontalmente su una pagina web. Dopo una lunga ricerca volta, ho finalmente imbattuto in qualcosa che era abbastanza vicino. Ho poi personalizzato il che, per quanto possibile per fargli fare esattamente quello che volevo fare.
Questo test è stato fatto su una pagina senza un DOCTYPE, così quando ho spostato verso una pagina che ha avuto un DOCTYPE, il javascript ottenuto incasinato e ha rifiutato di scorrere. E 'appena mostrato una singola immagine fissa (in safari e firefox)
Ho caricato entrambe le pagine web per il mio sito MobileMe in modo che voi ragazzi può avere uno sguardo.
La pagina senza un DOCTYPE: web.me.com/zubby
La pagina con un DOCTYPE: web.me.com/zubby/2.html
il javascript è anche descritto di seguito. Sarò estremamente grato se qualcuno mi può aiutare con questo.
ho caricato solo i file in questione in modo da Firebug probabilmente lamentarsi funzioni inesistenti.
var pic = new Array();
function banner(name, width, link){
this.name = name
this.width = width
this.link = link
};
pic[0] = new banner('images/cellarpics/cellarbynightsmall.jpg',203,'images/cellarpics/cellarbynightsmall.jpg');
pic[1] = new banner('images/cellarpics/insidecellarnewsmall.jpg',203,'images/cellarpics/insidecellarnewsmall.jpg');
pic[2] = new banner('images/cellarpics/mainshotwebsmall.jpg',203,'images/cellarpics/mainshotwebsmall.jpg');
pic[3] = new banner('images/cellarpics/MicroCelllar2tileopensmall.jpg',203,'images/cellarpics/MicroCelllar2tileopensmall.jpg');
pic[4] = new banner('images/cellarpics/openmicrosmall.jpg',203,'images/cellarpics/openmicrosmall.jpg');
pic[5] = new banner('images/cellarpics/topopenweb1small.jpg',203,'images/cellarpics/topopenweb1small.jpg');
pic[6] = new banner('images/cellarpics/topweb2small.jpg',203,'images/cellarpics/topweb2small.jpg');
pic[7] = new banner('images/cellarpics/topwebclosed1small.jpg',203,'images/cellarpics/topwebclosed1small.jpg');
/*
pic[8] = new banner('http://www.sxc.hu/pic/s/d/da/da9l/290444_yellow_rose.jpg',102,'http://www.sxc.hu/pic/m/d/da/da9l/290444_yellow_rose.jpg')
*/
var speed = 10;
var kk = pic.length;
var ii;
var hhh;
var nnn;
var myInterval;
var myPause;
var mode = 0;
var imgArray = new Array(kk);
var myLeft = new Array(kk);
for (ii=0;ii<kk;ii++){
imgArray[ii] = new Image()
imgArray[ii].src = pic[ii].name
imgArray[ii].width = pic[ii].width
hhh=0
for (nnn=0;nnn<ii;nnn++){
hhh=hhh+pic[nnn].width
};
myLeft[ii] = hhh
};
function ready(){
for (ii=0;ii<kk;ii++){
if (document.images[ii].complete == false){
return false
break
};
};
return true
};
function startScrolling(){
if (ready() == true){
window.clearInterval(myPause)
myInterval = setInterval("autoScroll()",speed)
};
};
function autoScroll(){
for (ii=0;ii<kk;ii++){
myLeft[ii] = myLeft[ii] - 1
if (myLeft[ii] == -(pic[ii].width)){
hhh = 0
for (nnn=0;nnn<kk;nnn++){
if (nnn!=ii){
hhh = hhh + pic[nnn].width
};
};
myLeft[ii] = hhh
};
document.images[ii].style.left = myLeft[ii]
};
mode = 1
};
function stop(){
if (mode == 1){
window.clearInterval(myInterval)
};
if (mode == 0){
window.clearInterval(myPause)
};
};
function go(){
if (mode == 1){
myInterval = setInterval("autoScroll()",speed)
};
if (mode == 0){
myPause = setInterval("startScrolling()",3000)
};
};
myPause = setInterval("startScrolling()",100)
for (ii=0;ii<kk;ii++){
document.write('<a href="' + pic[ii].link + '" target="_blank"><img style="height:131px;position:absolute;top:0;left:' + myLeft[ii] + ';" src="' + pic[ii].name + '" onMouseOver="stop()" onMouseOut="go()" /></a>');
};
Soluzione
In IE funziona. La ragione è che con doctype, impostando dichiarazione css lasciato opere in modo diverso, sembra che solo un numero non è sufficiente ... per farlo funzionare, in questa funzione di scorrimento automatico ()
Cambia
document.images[ii].style.left = myLeft[ii]
a
document.images[ii].style.left = myLeft[ii] + "px"
Inoltre, due dei vostri script non vengono caricate, menu.js e js / prettyPhoto.js
Altri suggerimenti
La ragione probabile è che non si dispone di virgolette gli attributi nell'ultima riga del codice:
document.write('<a href = ' + pic[ii].link + 'target="_blank" ><img space=0 hspace=0 vspace=0 border=0 height=131 style=position:absolute;top:0;left:0' + myLeft[ii] + '; src=' + pic[ii].name + ' onMouseOver=stop() onMouseOut=go()></a>')
document.write('<a href="' + pic[ii].link + '" target="_blank"><img style="height:131px;position:absolute;top:0;left:' + myLeft[ii] + ';" src="' + pic[ii].name + '" onMouseOver="stop()" onMouseOut="go()" /></a>');
Inoltre, Io vi consiglio di aggiungere un punto e virgola al vostro Javascript.
Infine, utilizzare una libreria per fare tutto questo e dormire di più.