Javascriptの画像スクローラーは、DOCTYPEで作業していません
-
12-09-2019 - |
質問
私は私が自動的にWebページ上に水平にノンストップの画像をスクロールすることができますいくつかのJavaScriptコードのためのネットのハードを検索してきました。検索に長い時間の後、私は最終的に十分に近くにあった何かに出くわしました。私はそれは私がそれをやってみたかった正確に何を作るためにそれを可能な限りカスタマイズします。
このテストはDOCTYPEせずにページ上で行われていたので、私はDOCTYPEを持っていたページにそれを上に移動したときには、Javascriptを台無しにしてスクロールすることを拒否しました。それだけ
(サファリとFirefoxに)単一の静止画像を示しました あなたたちは見ていることができるように私は自分のMobileMeサイトに両方のウェブページをアップロードしました。
DOCTYPEのないページ: web.me.com/zubbyする
DOCTYPEを持つページ: web.me.com/zubby/2.html
javascriptのも、以下詳述されています。誰かがこれで私を助けることができる場合、私は非常に感謝するでしょう。
放火犯は、おそらく存在しない機能に文句を言うだろうように、私は唯一の関連ファイルをアップロードします。
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>');
};
解決
IEでそれが動作します。その理由は、DOCTYPEで、設定CSS宣言は違った作品を残していることである唯一の数は、この機能の自動スクロールでは、十分ではない...それを動作させることがあるようだ()
変更
document.images[ii].style.left = myLeft[ii]
タグに
document.images[ii].style.left = myLeft[ii] + "px"
また、スクリプトの2がロードされません、menu.jsとJS / prettyPhoto.js
他のヒント
考えられる理由は、あなたのコードの最後の行に属性を囲む引用符を持っていないということです。
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>');
また、私は強くあなたのJavaScriptにセミコロンを追加することができアドバイス。
最後に、このすべてを行うと、より多くの睡眠を得るために、ライブラリを使用します。