1

TL;DR:对于 Twitter.com 上的所有“img.avatar”,我想在 src 属性中将“_normal.png”替换为“.png”。请参阅下面的代码和错误。

背景:我正在学习 JavaScript 和 jQuery。所以,我喜欢编写小脚本来将事情自动化作为练习。

问题:所以,我有一台 Retina MacBook Pro,而 twitter.com 上的 48px 头像看起来很糟糕(我知道,#firstworldproblem,但请耐心等待)。我注意到小48px头像和大头像的区别在于前者以“_normal.png”结尾,而后者只是以“.png”结尾。例子:

48px thumbnail: 
https://blablabla.com/7f11851408ac5220e361a22f1583e0db_normal.png 

Large version: 
https://blablabla.com/7f11851408ac5220e361a22f1583e0db.png

话虽如此,我想应用我的jQuery知识,系统地删除每个头像图像的src属性末尾的“_normal”,可以用“头像”类来识别。重点是什么?只是这样它就可以了这是我尝试过的:

jQuery("img.avatar").each( function(){
    $(this).attr("src", $(this).attr("src").replace("_normal.png", ".png"))
});

这是我在控制台中遇到的错误:

TypeError: Cannot call method 'replace' of undefined

我究竟做错了什么?$(this).attr("src")根据我对错误的理解,为什么未定义?

PS 我对 Stack Exchange 比较陌生,所以如果我违反任何约定,请提醒我。

4

1 回答 1

1

存在一些img没有src属性的元素。这将是导致问题的原因。尝试在更改属性之前添加条件,如下所示:

jQuery("img.avatar").each( function(){
    if($(this).attr('src'))
        $(this).attr("src", $(this).attr("src").replace("_normal.png", ".png"))
});
于 2012-11-29T16:45:18.727 回答