使用javascript返回element.onerror函数值

时间:2018-04-13 14:55:31

标签: javascript

我试图在函数内返回一个值,但变量只在函数内部更改。在函数外部,变量保持不变。

我尝试了以下内容:

//variable file_exist still has the value true in it.
img.onerror = function () {
        file_exist = false;
};

 //returns function(){ reutnr false;};
file_exist = img.onerror = function () {
        return false;
};

我似乎无法获得此功能的价值。有没有办法让这个值变错?

完整代码:

 var i = 1;
 var file_exist = true;
  while(file_exist){
    var img = document.createElement("img");
    img.src = "ws-img/"+id+"-"+i+".jpg";
    //deleted some code since no need here for the exampled
    img.onerror = function () {
         file_exist = false;
        console.log(file_exist);//shows false
    };
    console.log(file_exist);//shows true
    i++;
}

1 个答案:

答案 0 :(得分:0)

这不是我首选的方法,但它可以在您的特定场景中使用...

firebase.auth().currentUser.reload() // reloads user fields, like emailVerified:
if (!firebase.auth().currentUser.emailVerified) {
    //resend verification email
} else {
     //login
}

它为图像#1创建图像元素,然后在成功时它会增加计数器并再次运行。这将尝试加载图像#2,依此类推。当它出错时,它会停止并执行回调函数,因此您知道所有图像都已加载。

但是有一些问题。如果没有为任何原因加载图像,它将停止并加载更多图像。一个更好的解决方案是使用服务器端代码(在您的情况下为PHP)构建包含所有图像的页面,或者如果您确实希望在客户端执行图像加载,则创建一个API调用,为您提供所有图像的列表。 Javascript可以进行1次调用以获取该数据,然后加载所有图像,安全地知道它们确实存在。