使用onload和onerror的JavaScript

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();


}

这段代码的目的是迭代网络漫画页面。如果下一页存在,则应加载该页,并在加载完成后进行显示。如果页面不存在,则代码应调用另一个函数,因为这表明我们可能已经到达档案的末尾。不幸的是,这段代码根本没有效果。甚至滚动功能也会出现问题。

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代码。显然,我一直在像白痴一样摸索。我在几个地方读到异步执行会导致onerror出错,但我认为应该已经考虑到这一点了。
如何使img.onload和onerror函数正常工作?如果代码异步执行,如何进行结构化编程?

这也很奇怪: img comic = new Image();, 可能应该改成 comic = new Image(); - Teemu
1个回答

3
你需要在更改src之前先声明它们。
此外,你正在替换onerror,因此除非lastComicReached返回函数,否则需要删除()。
最后,img 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";

lastComicReached确实是一个函数...但它也有问题,不过我会继续努力修复它并看看能否解决。 - user1869994
顺便说一下,它运行得很出色。你比我能表达的更感激。 - user1869994

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接