4
function loadNextComic()
{
window.scrollTo( 200, 480);
img comic = new Image();
    currentComicNumber++;
    comic.src="Freqpg"+currentComicNumber+".jpg";
    comic.onload = function()
        {
        document.getElementById("comic").src="Freqpg"+currentComicNumber+".jpg";
        document.getElementById("numberOutput").innerHTML=currentComicNumber;
        }
    comic.onerror =lastComicReached();


}

このコードは、Web コミック ページを繰り返すことを目的としています。次のページが存在する場合は、それが読み込まれ、読み込まれると表示されます。ページが存在しない場合、コードは別の関数を呼び出す必要があります。これは、おそらくアーカイブの最後に達したことを示しているためです。残念ながら、このコードは何もしません。スクロール機能も壊れます。

function loadNextComic()
{
window.scrollTo( 200, 480);
//img comic = new Image();
    currentComicNumber++;
    //comic.src="Freqpg"+currentComicNumber+".jpg";
    //comic.onload = function()
    //  {
        document.getElementById("comic").src="Freqpg"+currentComicNumber+".jpg";
        document.getElementById("numberOutput").innerHTML=currentComicNumber;
    //  }
    //comic.onerror =lastComicReached();


}

imgコードがコメントアウトされたこのコードは、もちろんページがなくなるまでページを正しく進めます(連続して確実に名前が付けられます)。この数が毎週どのように変化するかを見て、最後のページ番号を単純にハードコーディングすることはできません. サイトの他の例を見た後、img.onerror と onload のコードを使用してみました。明らかに、私はこれでばかのように手探りしてきました。非同期実行がエラーで中断することについていくつかの場所で読んだことがありますが、これはそれを説明する必要があると思いました。

img.onload および onerror 関数を機能させるにはどうすればよいですか? コードが非同期で実行される場合、構造化プログラミングをどのように行いますか?

4

1 に答える 1

3

src を変更する前に宣言する必要があります

また、onerror を置き換えているため、lastComicReached が関数を返さない限り、() を削除する必要があります。

Lastlyimg comicは有効な構文ではありません。var comic

var comic = new Image(); 
comic.onload = function() {
  document.getElementById("comic").src="Freqpg"+currentComicNumber+".jpg";
  document.getElementById("numberOutput").innerHTML=currentComicNumber;
}
comic.onerror =lastComicReached; // remove the () here!!
comic.src="Freqpg"+currentComicNumber+".jpg";
于 2012-12-02T11:28:57.900 に答える