无法更改图像来源

问题描述 投票:0回答:1
javascript html string-literals
1个回答
5
投票

三个原因:

  1. 因为JavaScript字符串中的

    \
    (就像在我的编程语言中一样)是一个转义字符,所以你的字符串实际上没有任何反斜杠。

    要在字符串文字中包含实际的反斜杠,您需要使用反斜杠对其进行转义。

  2. src
    属性是一个完全解析的URL,它将以协议开头,在本例中为
    file:
    ,并具有标准化斜杠(反斜杠在标准化URL中变为
    /
    )。

  3. String#match
    需要正则表达式。您向其传递一个字符串,因此该字符串将通过
    new RegExp
    运行,这意味着即使使用
    \\
    ,您在该正则表达式中仍然不会有反斜杠,因为反斜杠在正则表达式中也是特殊的(就像
    .
    ,因此
    .jpg
    将成为一个问题)。您需要
    \\\\
    只是为了在生成的正则表达式中包含一个文字反斜杠。

这是一个可能的解决方法:

function changeImage() {
    var image = document.getElementById("myImgId");
    if (/photo2\.jpg$/.test(image.src)) {
        image.src = "C:\\Users\\USER\\Desktop\\GRAPHICS\\photo3.jpg";
    } else {
        image.src = "C:\\Users\\USER\\Desktop\\GRAPHICS\\photo1.jpg";
    }
}

这些 Windows 路径将在分配时转换为 URL。

或者您可能想循环浏览这三个图像:

function changeImage() {
    var image = document.getElementById("myImgId");
    image.src = image.src.replace(/photo(\d)\.jpg$/, function(m, c0) {
        var next = +c0 % 3 + 1;
        return "photo" + next + ".jpg";
    });
}

每次调用它时,都会前进到下一张照片,从 3 循环到 1。

© www.soinside.com 2019 - 2024. All rights reserved.