在“加载或错误”中设置值后从全局变量返回

时间:2014-02-03 13:11:28

标签: javascript jquery

我正在尝试function检查有效image url并返回true / false,具体取决于valid url

<script type="text/javascript">
function IsValidImageUrl(url) {
    var valval = '1';
    jQuery("<img>", {
        src: url,
        error: function(valval) { valval = '1'; alert('ERROR'); },
        load: function(valval) { valval = '0'; alert('Success'); }
    });
    alert(valval);
    return valval;
}
</script>

但是,即使在Success上,它也会将valval的值返回为1。它没有将valval的值设置为0

2 个答案:

答案 0 :(得分:1)

您可以将回调用于您的目的

<script type="text/javascript">
function IsValidImageUrl(url, callback) {
    jQuery("<img>", {
        src: url,
        error: function() { callback(1); },
        load: function() { callback(0); }
    });
}

//usage
IsValidImageUrl('text.jpg', function (val){
    if (val == 0)
        alert('success');
    if (val == 1)
        alert('error');
});
</script>

答案 1 :(得分:0)

这是因为您在请求完成之前返回了值。我在这里设置了一些回调,如下:

function IsValidImageUrl(url, callback) {
    var valval = '1';
    jQuery("<img>", {
        src: url,
        error: function(valval) { callback('1') },
        load: function(valval) { callback('0') }
    });
}