自動で動作する(ボタンなし)シンプルなスライドショーを作りたいです。画像は下から上にスライドする必要があります。コードの後のことを説明しました。
HTML:
<ul id="imgSlider1">
There are images here in <li> tags
</ul>
JavaScript:
window.onload = initAll;
function initAll(){
var img = document.getElementById("imgSlider1");
if((parseInt(window.getComputedStyle(img).top)) == -1160){
img.style.top = 290 +"px";}
var i = parseInt(window.getComputedStyle(img).top);
var j = i-290;
slideIt(i, j, img);
}
function slideIt(initTop, finalTop, target){
if(initTop == finalTop){
window.setTimeout(initAll, 10000);
}
target.style.top = (initTop - 1)+"px";
var presentTop = parseInt(window.getComputedStyle(target).top);
window.setTimeout(function(){ slideIt(presentTop, finalTop, this)},20)
}
私がここでやろうとしたこと: 「initAll()」関数はリストの「トップ」を取得し、「i」にその値が割り当てられます。変数「j」には「i-290」が割り当てられます (290px が各画像の高さであるため)。ここで、「i」、「j」、およびターゲット オブジェクト (ここでは画像のリスト) が次の関数「slideIt()」に渡されます。「slideIt()」関数は、ターゲット オブジェクトの「top」から毎回「1px」を減算し、「top」が「finalTop」(「j」に割り当てられた値)と等しくなるまで何度も呼び出されます。この条件が満たされると、10 秒後に「initAll」関数がコールバックされます。
では、なぜこのコードが機能しないのでしょうか?
コンソールに「未定義のプロパティ 'top' を設定できません」と表示される