我正在构建一个简单的查找和替换脚本,如果它存在于同一目录中,则会找到更大版本的图像。
我似乎无法正确行事或似乎无法正常工作。
如果我有一个小图片,我希望jQuery用更大的版本替换它。
小图片示例:
<img src="/images/sub/1234S.jpg" />
用小号替换小版本的大图像示例:
<img src="/images/sub/1234L.jpg" />
所以它只是用'L'代替'S',这在整个我的图像中是相对的。这始终是文件扩展名之前url的最后一个字符。
我不是在寻找'质量'替换'S'和'L',因为提供的一些图像文件名包含字母'L'和&amp;在'内'。这只是最后一个角色。
到目前为止,我已经把它添加到了最后......但是我似乎无法删除'S'。
var imageType = images[i].src.substr(-4);
var imageName = images[i].src.substr(0, images[i].src.length - 4);
imageName += "L" + imageType;
我尝试使用'切片',但无法让它工作。任何想法我都会非常感激。
答案 0 :(得分:1)
您可以使用正则表达式将'S'替换为'L'
"/images/sub/1234S.jpg".replace(/S.jpg$/, 'L.jpg')
答案 1 :(得分:0)
var imagePath = images[i].src;
var imageType = imagePath.src.substr(-4);
var withoutExtension = ID.substring(imagePath.lastIndexOf(".") + 1);
var final = withoutExtension + "S" + imageType ;
答案 2 :(得分: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...
。)
对于更“强大”的解决方案(例如,考虑多种文件类型和可变扩展名长度),您可以使用 regular expression :
var regex = /S(\.[^\.]+)$/;
...
images[i].src.replace(regex, "L" + "$1");
...
答案 3 :(得分:0)
尝试
var len = images[i].src.lastIndexOf('.');
var imageType = images[i].src.substr(len);
imageName = images[i].src.substr(0,len-1)+'L'+imageType;
答案 4 :(得分: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';
});
});
});