我有一个带有两个箭头的图像,可以增加/减少图像文件名。这是左箭头代码:
$('#sidebar-b').on("click", "#lar", function() {
var num = parseInt($('#main-img').attr('src').match(/(\d+)/)[1], 10);
if (num > 1) {
$('#main-img').attr('src', $('#main-img').attr('src').replace(/\d+/, function(val) {
return parseInt(val)-1
}));
}
});
权利非常相似。
$('#sidebar-b').on("click", "#rar", function(){
var num = parseInt($('#main-img').attr('src').match(/(\d+)/)[1], 10);
if (num < $('#scroller').children().length) {
$('#main-img').attr('src',$('#main-img').attr('src').replace(/\d+/, function(val) {
return parseInt(val)+1
}));
}
});
当图像在“images /”中时效果很好但如果它们在“images / h3 /”或任何带有数字的目录中,每次我点击箭头时它只会增加目录名称(images / h3 / 1.jpg,images / h4 / 1.jpg等。)
这显然不好。
尝试更改正则表达式,如果在最后一个/之前或之前选择了字符,可能会更好。
甚至可以使用id.lastIndexOf('/')?
我整天都在编码,此刻我的大脑刚刚被炸掉了,所以我要休息一下,喝一杯茶。
希望你们其中一位出色的人会指出我出错的地方很明显。
目前一切看起来都像乱七八糟的数字给我,我看不到树木的木头!
答案 0 :(得分:1)
您需要使用基于前瞻性的正面正则表达式。现在,这将增加仅在扩展之前存在的数字。
$('#sidebar-b').on("click", "#lar", function(){
var num = parseInt($('#main-img').attr('src').match(/(\d+)(?=\.[^\/.]*$)/)[1], 10);
if (num > 1) {
$('#main-img').attr('src',$('#main-img').attr('src').replace(/\d+(?=\.[^\/.]*$)/,
function(val) { return parseInt(val)-1}));
}
});
答案 1 :(得分:1)
在这种情况下你真的不需要正则表达式:
A
答案 2 :(得分:0)
使用.match
RegExp
/\d+\./
var url = "images/h4/1.jpg";
console.log(parseInt("images/h4/1.jpg".match(/\d+\./), 10));