Uncaught ReferenceError: xxx is not defined

写了一个函数,在页面中引用,加载图片的时候调用这个函数。函数生效了,但是在控制台有显示报错。
把那个函数单独拿出来做个demo的时候,也不报错,但是和其他的js代码放在一起就一直报错,不知道什么原因。希望有懂的大神们指点一下。
Uncaught ReferenceError: AutoResizeImage is not defined

代码如下
js
//图片等比缩放

function AutoResizeImage(maxWidth, maxHeight, objImg) {

    var img = new Image();
    img.src = objImg.src;
    var hRatio;
    var wRatio;
    var Ratio = 1;
    var w = img.width;
    var h = img.height;
    wRatio = maxWidth / w;
    hRatio = maxHeight / h;
    if (maxWidth == 0 && maxHeight == 0) {
        Ratio = 1;
    } else if (maxWidth == 0) {//
        if (hRatio < 1) Ratio = hRatio;
    } else if (maxHeight == 0) {
        if (wRatio < 1) Ratio = wRatio;
    } else if (wRatio < 1 || hRatio < 1) {
        Ratio = (wRatio <= hRatio ? wRatio : hRatio);
    }
    if (Ratio < 1) {
        w = w * Ratio;
        h = h * Ratio;
    }
    objImg.height = h;
    objImg.width = w;
}

html

<center><img onerror="this.src='/Content/images/nopic.jpg'" data-src="@BuildEffectImage(effectImage, 0, 625)" src="@ConfigHelper.CdnPrefix/Content/images/NewHome/white.png" class="coverimage" height="625" onload="AutoResizeImage(830, 0, this);"  /></center>

报错图片

clipboard.png

阅读 12.6k
1 个回答

可能是js加载的顺序有错
把这个js放在调用之前加载

js的加载涉及到先后加载的问题
如果后面是直接调用执行的,就需要在调用执行之前加载
如果是等页面加载完成才待用执行,js放在那里加载都没有问题
js的加载是根据页面代码的先后顺序加载的,页面加载是从上到下的加载的

当浏览器遇到(内嵌)<script>标签时,当前浏览器无从获知javaScript是否会修改页面内容。因此,这时浏览器会停止处理页面,先执行javaScript代码,然后再继续解析和渲染页面。同样的情况也发生在使用 src 属性加在javaScript的过程中(即外链 javaScript),浏览器必须先花时间下载外链文件中的代码,然后解析并执行它。在这个过程中,页面渲染和用户交互完全被阻塞了。

也就是说:每当浏览器解析到<script>标签(无论内嵌还是外链)时,浏览器会(一根筋地)优先下载、解析并执行该标签中的javaScript代码,而阻塞了其后所有页面内容的下载和渲染。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题