0

我正在构建一个简单的查找和替换脚本,如果图像存在于同一目录中,它会查找更大版本的图像。

我似乎无法正确或似乎无法正常工作。

如果我有一个小图像,我希望 jQuery 用更大的版本替换它。

小图像示例:

<img src="/images/sub/1234S.jpg" />

用大图像替换小版本的示例:

<img src="/images/sub/1234L.jpg" />

所以它只是用'L'替换'S',这在我的整个图像中都是相对的。这始终是文件扩展名之前 url 的最后一个字符。

我不是在寻找“质量”用“L”替换“S”,因为提供的某些图像文件名确实包含字母“L”和“S”。这只是最后一个字符。

到目前为止,我已经在末尾添加了“L”。但我似乎无法去掉“S”。

var imageType = images[i].src.substr(-4);
var imageName = images[i].src.substr(0, images[i].src.length - 4);
imageName += "L" + imageType;

我试过使用'slice',但无法让它工作。任何想法我都会非常感谢。

4

5 回答 5

1

您可以使用正则表达式将 'S' 换成 'L'

"/images/sub/1234S.jpg".replace(/S.jpg$/, 'L.jpg')
于 2013-10-21T17:03:12.343 回答
0

尝试

var len = images[i].src.lastIndexOf('.');
var imageType = images[i].src.substr(len);
imageName = images[i].src.substr(0,len-1)+'L'+imageType;
于 2013-10-21T17:07:09.843 回答
0

给定 HTML:

<img src="/images/sub/1234L.jpg" />

以及您希望在点击事件上在大图像和小图像之间进行更改的假设:

$('img').on('click', function(){
    $(this).prop(function(i,s){
        return s.replace(/(S|L)\.jpg$/,function(a){
            console.log(a);
            return (a === 'S' ? 'L' : 'S') + '.jpg';
        });
    });
});
于 2013-10-21T17:07:34.273 回答
0
var imagePath = images[i].src;
var imageType = imagePath.src.substr(-4);
var withoutExtension = ID.substring(imagePath.lastIndexOf(".") + 1);
var final = withoutExtension  + "S" + imageType  ;
于 2013-10-21T17:03:31.000 回答
0

如果您确定所有图像都有 3 个字母的扩展名,您可以这样做:

var imageType = images[i].src.substr(-4);
var imageName = images[i].src.substr(0, images[i].src.length - 5);
imageName += "L" + imageType;

(基本上,只需替换...images[i].src.length - 4......images[i].src.length - 5....)

对于更“稳健”的解决方案(例如,考虑多种文件类型和可变扩展长度),您可以使用正则表达式

var regex = /S(\.[^\.]+)$/;
...
images[i].src.replace(regex, "L" + "$1");
...
于 2013-10-21T17:04:58.260 回答