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 代码。很明显,我一直像个白痴一样摸索这个。我在一些地方读到过关于异步执行中断错误的内容,但我认为这应该可以解释这一点。

如何让 img.onload 和 onerror 函数工作?如果代码异步执行,你如何进行结构化编程?

4

1 回答 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";
于 2012-12-02T11:28:57.900 回答