2011-07-27 51 views
3

由我自己承认,我已经变得相当有能力的jQuery用户,并且不需要太多关于它的javascript知识。jQuery通过'src'属性找到图片 - plain javascript

最近我试图找到一个妥协,当权衡是否值得导入相对较小的任务的jQuery框架。作为一个学习练习,试图至少考虑如何在没有jQuery的情况下实现它。

我目前正在研究jQuery不是一个选项的东西。 (大型组织,实践经验丰富)。

我可以选择使用jQuery源代码的图像,但任何人都可以解释如何在普通的javaScript中执行此操作。

$('img[src*="pic.gif"]').hide(); 

非常感谢 加里

回答

5

像这样:

function findImagesByRegexp(regexp, parentNode) { 
    var images = Array.prototype.slice.call((parentNode || document).getElementsByTagName('img')); 
    var length = images.length; 
    var ret = []; 
    for(var i = 0; i < length; ++i) { 
     if(images[i].src.search(regexp) != -1) { 
     ret.push(images[i]); 
     } 
    } 
    return ret; 
} 
2

只需选择页面上的所有图像,并用正则表达式或字符串函数过滤他们的src:

var imgs = Array.prototype.slice.apply(document.getElementsByTagName('img')), 
    resultImgs = []; 
for (var i = 0; i < imgs.length; i++) { 
    if (imgs[i].src.indexOf('img.gif') !== -1) { 
     resultImgs.push(imgs[i]); 
    } 
} 

以关注Array.prototype.slice.apply。它将由getElementsByTagName返回的HTMLCollection转换为常规数组。这将会提高你的脚本速度数百倍。

+0

我想你想用'Array.prototype.slice.apply' –

+0

是的,固定的。谢谢。现在效果很好。 – bjornd

1
var images = document.getElementsByTagName('IMG'); 
for (var i = 0; i < images.length; ++i) { 
    if (images[i].src == "pic.gif") 
     images[i].style.display = 'none'; 
}