[英]Javascript replace text after an underscore
我试图在文件名中的下划线后替换一些文本。
文件名示例: FileName_true.png
。 我需要将其更改为FileName_false.png
。
基本上,我单击后要更改图像。 (颜色为黑白,反之亦然)。 我考虑过在JQuery中使用切换功能,但是我不确定是否可以在不重复5次代码的情况下使用5张图片来完成此操作。
我的想法是创建一个使用正则表达式的函数,以捕获单击的图像的文件名中的“ true”或“ false”,然后将其替换为替代字符。
您对此有何想法? 如果可能,我希望在PHP中完成此操作,但如果不这样做,则希望使用JavaScript / JQuery。 谢谢你的帮助! 如果您有任何疑问,请告诉我。
filename = filename.replace('_true','_false');
既不需要jQuery也不需要正则表达式
<img src="FileName_true.png"
onclick="this.src=(this.src.indexOf('_true')!=-1)?this.src.replace('true','false'):this.src.replace('false','true')" />
这是我这晚可以想到的
在php中做到这一点很愚蠢,并且需要一个cookie
mplungjan的答案很好,但让我提出一些替代方案。 最好使用sprite进行图像交换,这样就不会在图像之间切换任何延迟。 将两个版本的图像并排放置在一个文件中。 将该图像设置为div的背景,并调整背景位置以显示一个或另一个图像。
假设“ pic1_bw_color_sprite.png”是一张75x75彩色图像,其下方有75x75 b / w图像,则最终图像的宽度为75px,高度为150px。 像这样设置您的CSS:
#pic1
{
background-image: url(pic1_bw_color_sprite.png);
height: 75px;
width: 75px;
}
#pic1.bw
{
background-position: 0px -75px;
}
然后使用一些简单的jQuery使其全部工作:
$("#pic1").click(function()
{
$(this).toggleClass("bw");
});
在这里尝试: http : //jsfiddle.net/gilly3/B7esz/
至于复制代码,这是jQuery非常擅长避免的一件事。 只需使用包含每个需要行为的类的选择器:
$("#pic1,#pic2,#pic3,#pic4").click(...);
// or
$(".bwSwap").click(...);
为了将当前状态存储在表单中以便可以更新数据库,您需要获取对form元素的引用,然后设置value
属性(或jQuery中的.val()
)。
$("#pic1").click(function()
{
$(this).toggleClass("bw");
$("#pic1isBW").val($(this).hasClass("bw"));
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.