【问题标题】:Javascript replace text after an underscoreJavascript 替换下划线后的文本
【发布时间】:2011-04-10 20:19:21
【问题描述】:

我正在尝试替换文件名中下划线后的一些文本。

示例文件名:FileName_true.png。我需要把它改成FileName_false.png。

基本上,我有一个图像,当您单击它时我想更改它。 (颜色为黑白,反之亦然)。我考虑过在 JQuery 中使用切换,但我不确定是否可以使用 5 张图像而不重复代码 5 次。

我的想法是创建一个函数,该函数使用正则表达式来捕获您单击的图像文件名中的“真”或“假”,并将其替换为备用。

你对完成这个有什么想法?如果可能,我希望在 PHP 中完成此操作,但如果不是,则使用 JavaScript/JQuery。谢谢你的帮助!如果您有任何问题,请告诉我。

【问题讨论】:

    标签: javascript regex toggle


    【解决方案1】:
    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

    【讨论】:

    • 非常感谢...我会试一试的。现在,是否有办法将新文件名存储在变量或隐藏输入中,以便我可以在表单上传递它。图像在表单内,文件名是从数据库中提取的(通过 PHP),我希望能够在提交表单时将文件名的新当前状态保存在数据库中。
    【解决方案2】:

    mplungjan 的回答很好,但让我提出一些替代方案。图像交换最好使用sprite 完成,这样图像之间的切换就不会出现任何延迟。将图像的两个版本并排放在一个文件中。将该图像设置为 div 的背景,并调整背景位置以显示一个或另一个图像。

    假设“pic1_bw_color_sprite.png”是一个 75x75 的彩色图像,其下方是一个 75x75 的黑白图像,使最终图像宽 75 像素,高 150 像素。像这样设置你的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(...);
    

    要将当前状态存储在表单中以便更新数据库,您需要获取对表单元素的引用,然后设置 value 属性(或 jQuery 中的 .val())。

    $("#pic1").click(function()
    {
        $(this).toggleClass("bw");
        $("#pic1isBW").val($(this).hasClass("bw"));
    });
    

    【讨论】:

    • 太好了,谢谢!听起来这可能是一个更好的选择。尽管我将文件名存储在数据库中,以便以后可以引用。您对我对 mplungjan 关于如何将新文件名保存到数据库的回答的评论有任何想法吗?
    • @Ryan - 要在表单中获取值,只需填充元素的 value 属性。我在回答中添加了一个示例。
    • +1 表示精灵。我必须记住这一点。最初需要做更多的工作,因为您必须更改所有要切换为 sprite 的图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2017-03-18
    • 2013-08-22
    • 2018-08-10
    • 2011-07-12
    相关资源
    最近更新 更多