三个原因:
因为JavaScript字符串中的
\
(就像在我的编程语言中一样)是一个转义字符,所以你的字符串实际上没有任何反斜杠。
要在字符串文字中包含实际的反斜杠,您需要使用反斜杠对其进行转义。
src
属性是一个完全解析的URL,它将以协议开头,在本例中为file:
,并具有标准化斜杠(反斜杠在标准化URL中变为/
)。
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。