首页 > 解决方案 > 单击按钮时替换图像 src 属性中的文件夹名称

问题描述

单击按钮/触发器时,我需要将特定类“.imageShift”的所有实例的文件夹路径名称从 img/image.jpg 更改为 imgdark/image.jpg。在图像 src 中插入的图像名称在所有出现时都应该保持不变。只是“img”文件夹路径必须替换为“imgdark”。我尝试了下面给出的代码。

$('.themeColor').click(function () {
    var getId = $(this).attr('id');
    var imagePath = $('.imagePath');
    if (getId === 'darkTheme') {

        imagePath.attr('src', function (index, attr) {
            return attr.replace('img', 'imgdark');
        });
    } else if (getId === 'lightTheme') {
        imagePath.attr('src', function (index, attr) {
            return attr.replace('imgdark', 'img');
        });
    }
});

上面的代码运行良好,但每次单击时都会出现控制台错误,如下所示。我需要摆脱那个控制台错误,并像现在一样完成这项工作。如果有人已经这样做了,请提供帮助。

Uncaught TypeError: Cannot read property 'replace' of undefined
at HTMLLIElement.<anonymous> (homepage.js:1619)
at z (jquery-3.3.1.min.js:2)
at w.fn.init.attr (jquery-3.3.1.min.js:2)
at HTMLSpanElement.<anonymous> (homepage.js:1617)
at HTMLSpanElement.dispatch (jquery-3.3.1.min.js:2)
at HTMLSpanElement.y.handle (jquery-3.3.1.min.js:2)

标签: javascriptjqueryhtmlcss

解决方案


用这个:

$('.themeColor').click(function () {
var getId = $(this).attr('id');
var imagePath = $('.imagePath');
if (getId === 'darkTheme') {

    imagePath.attr('src', 'imgdark/image.jpg');
} else if (getId === 'lightTheme') {
    imagePath.attr('src', 'img/image.jpg');
}

});


推荐阅读