2014-10-01 31 views
0

我有一个功能,可以逐个以不同方式搜索图像,并且对于每个试验,如果找到一个,函数将返回该图像。有没有更好的方式来返回一个对象,如果它存在于JavaScript中?

如果我搜索各种图像,代码变得非常笨重,是否有更优雅的方式来尝试查找对象并在存在时返回它?

var image = $('a.jqzoom')[0].getAttribute('href'); 
if (image) 
    return image; 

于是,我不断尝试其他方法来查找图片的一前一后,例如:

var image = $('a.asdf')[0].getAttribute('href'); 
if (image) 
    return image; 
+1

让它成为一个功能...? – Biffen 2014-10-01 10:24:52

+0

返回仅在函数内有效,因此已经是函数 – Svend 2014-10-01 10:26:36

+0

@Svend是它已经是一个函数。我想我可以使标签成为一个数组,并通过for循环逐一循环。我更想知道是否有更好的方法来编写'if(x)return x;' – YPCrumble 2014-10-01 10:28:45

回答

1

考虑:

return $('a.jqzoom')[0].href || <value if not found>; 

所以如果找不到元素,则第一部分返回undefined并返回第二个值。更多jQuery-ish方法是:

return $('a.jqzoom').prop('href') || <value if not found>; 

但是我有点困惑,不是一个A元素的href应该是一个文档(或其他基于文本的对象),而不是一个图像?

+0

这是一个自定义刮板的网站,有奇怪的布局 - 这一个使用javascript来拉图像网址,这就是为什么我拉a元素。感谢您的回答! – YPCrumble 2014-10-01 10:52:50

0

如果你的函数不与return发言结束它的返回值undefined。所以,你应该这样写:

return $('a.asdf')[0].getAttribute('href'); 

它基本上相当于你已经得到了(这是一个有点宽松,凭借你得到了truthy检查

相关问题