【问题标题】:jquery passing a return reference to another funcjquery将返回引用传递给另一个函数
【发布时间】:2015-12-05 01:17:01
【问题描述】:

我正在尝试检查图片网址:

function testImage(URL) {
    var tester=new Image();
    tester.onload = function(){ return true}
    tester.onerror= function(){ return false}
    tester.src=URL;
}

并使用此函数获得响应:

function image() {

  var image = $(".image").val(); 

  if(testImage(image)){
    $("#display").css({
      'background-image' : 'url('+ image +')',
      'background-size'  : 'cover',
      'display'  : 'block'
    });
  } else {
    $("#display").css({
       'display'  : 'none'
    });
    return true;
  } 

}

但是由于某种原因它不起作用..一直试图找到几个小时的解决方案..但是如果我将第一个 func 代码替换为:

 tester.onload = function(){alert("Yes")}
 tester.onerror= function(){ alert("Nope")}

它将正确显示所有警报,具体取决于图像 url 是否存在..

如何检查 testImage 函数是否返回 true 或 false 以便正确实现它??

【问题讨论】:

标签: jquery


【解决方案1】:

tester.onloadtester.onerror 是图像加载时异步执行的回调。您正在那里设置回调,但不会立即调用它们。它们的返回值不会成为testImage 的返回值。你没有从testImage 返回任何东西,所以它返回了undefined,它在 if 语句中的计算结果为 false。

相反,请考虑为您要应用的每组样式创建一个回调函数,并将这些回调传递给testImage,为onload 设置一个,为onerror 设置一个。

像这样:

function testImage(url, success, failure) {
    var tester = new Image();
    tester.onload = success;
    tester.onerror = failure;
    tester.src = url;
}

function successCss() {
    //...
}

function failureCss() {
    //...
}

testImage('path/to/your/image.png', successCss, failureCss);

【讨论】:

  • 是的,这可能是我搞砸之前的原始代码..现在我明白了你的意思..我之前试图让successCss func的响应返回到图像..哦上帝..这些天很难成为菜鸟。感谢您的解释,我会测试一下,如果它工作正常,我会接受你的回答!
  • 它工作正常,但不是因为我需要工作..因为如果我输入正确的图像 url 它会显示图像,如果我搞砸了那个 url(现在用于测试)它不会显示起来,如果我再次将该 url 编辑到另一个错误的 url,它将快速显示成功函数,然后出现错误,因为它检查这些错误不是在点击乐趣上而是在 keyup 上
猜你喜欢
  • 1970-01-01
  • 2021-04-21
  • 2011-10-31
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 2012-03-03
  • 2021-04-10
  • 2021-08-14
相关资源
最近更新 更多