Jquery/Javascript - 存储字符串的最后 4 个字母(跨浏览器)

发布于 2024-09-15 10:03:48 字数 561 浏览 8 评论 0原文

我编写了一个快速图像交换类,通过将“_grey”添加到图像 src 来切换悬停时的图像。该代码在除 ie6 之外的所有浏览器中的整个站点中都运行良好。 substr 在这里似乎无法正常工作 - 请提供任何建议!?

代码如下——

$(document).ready(function() {
var initImg;    
    $('img.swapGrey').hover(function() {


        initImg = $(this).attr("src");  
        var imgType = (initImg).substr(-4);
        alert(initImg);
        var greyImg = initImg.slice(0, -4) + "_grey" + imgType;
        alert(greyImg);

        $(this).attr("src",greyImg);

            }, function() {
        $(this).attr("src",initImg);

    });


});

I've written a quick image swap class that switches images on hover by placing adding '_grey' to the image src. The code works great throughout the site in all browsers apart from ie6. The substr doesnt seem to work properly here - any advice please!?

Code as follows -

$(document).ready(function() {
var initImg;    
    $('img.swapGrey').hover(function() {


        initImg = $(this).attr("src");  
        var imgType = (initImg).substr(-4);
        alert(initImg);
        var greyImg = initImg.slice(0, -4) + "_grey" + imgType;
        alert(greyImg);

        $(this).attr("src",greyImg);

            }, function() {
        $(this).attr("src",initImg);

    });


});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

静待花开 2024-09-22 10:03:48

使用 slice 而不是 substrsubstr 是非标准的,而 slice 在 ECMAScript 3 规范中指定(包括负数位置),并且在所有主要浏览器中都受支持,包括 IE 6。

Use slice rather than substr. substr is non-standard, while slice is specified (including negative positions) in the ECMAScript 3 spec, and is supported in all the major browsers, including IE 6.

嘿咻 2024-09-22 10:03:48

只需在 IE 中使用正起始位置即可。

just use a positive starting position in IE.

夜吻♂芭芘 2024-09-22 10:03:48

IE 不支持 substr 参数使用负值。

IE doesn't support negative values for the argument of substr.

墟烟 2024-09-22 10:03:48

尝试将代码放入 load 事件而不是 ready 中:

$(window).load(function(){
  // your code...
});

使用 load 事件的原因是当图像完全加载到页面中时与 ready 事件不同。

Try putting your code in load event rather than ready:

$(window).load(function(){
  // your code...
});

The reason for using load event is that by the time images have completely loaded into the page unlike ready event.

丑疤怪 2024-09-22 10:03:48

比需要的更详细(以显示函数的效果),但如果 test.jpg 是 img 元素的 src,则基本上将 test.jpg 更改为 test_grey.jpg。

    $(document).ready(function() {
        var initImg;
        $('img.swapGrey').hover(function() {


            initImg = $(this).attr("src");
            var len = initImg.length - 4;
            var imgType = initImg.slice(len);
            alert(":"+imgType+":");
            alert(initImg + " is " + len +":"+ imgType);
            var greyImg = initImg.slice(0, -4) + "_grey" + imgType;
            alert(greyImg);

            $(this).attr("src", greyImg);

        }, function() {
            $(this).attr("src", initImg);
      });
 });

More verbose than needs to be (to show the effect of the functions), but basically changes test.jpg to test_grey.jpg if test.jpg is the src of the img element.

    $(document).ready(function() {
        var initImg;
        $('img.swapGrey').hover(function() {


            initImg = $(this).attr("src");
            var len = initImg.length - 4;
            var imgType = initImg.slice(len);
            alert(":"+imgType+":");
            alert(initImg + " is " + len +":"+ imgType);
            var greyImg = initImg.slice(0, -4) + "_grey" + imgType;
            alert(greyImg);

            $(this).attr("src", greyImg);

        }, function() {
            $(this).attr("src", initImg);
      });
 });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文