1

関数を実行するループ。ただし、次のように機能します。ページ上の画像が読み込まれている間、カウンターはカウントされます。

var progress = function()
 {
   for (var i = 0; i < slide.length; i++)
    slide[i].onload = function(){
         actualprogress +=1,
         loading.innerHTML = actualprogress
    };
 }

以下は動作しませが。ページを開くと、カウンターは最初から「[n]」(スライドの数、たとえば「12」)と表示されます。

var progress = function()
 {
   var action = function(){
     actualprogress +=1;
     loading.innerHTML = actualprogress
   }
   for (var i = 0; i < slide.length; i++)
     slide[i].onload = action();
 }

関数内で他のことを行う必要があるため、forループから関数を呼び出したいと思います。なぜこれが機能しないのですか?

4

2 に答える 2

2

In the first code you are assigning the function pointer to the onload property.

In the second code you are assigning the function returned value to the onload property which is null.

There is a huge difference between those. The parantheses are extra in the second code, after action.

onload = action() => onload = action

Cheers

于 2012-11-10T18:06:30.183 に答える
2

On the last line of the second snippet, you're calling the function, instead of just assigning it to slide[i].onload.

Simply change slide[i].onload = action(); to slide[i].onload = action;.

于 2012-11-10T18:07:17.623 に答える