所以,我是Javascript的新手。在我的代码中,我有一个像这样声明的图像对象:
<img src="me.png" id="changepic" alt="That's me!">
在我的脚本代码中,我想编写一个布尔语句,当src为“me.png”时返回true,如图所示,如果不是“me.png”则返回false。此布尔语句位于以下if语句的条件中:
function changeImage() {
if (document.getElementById("changepic").src === "me.png"){
document.getElementById("changepic").setAttribute("src", "me2.png");
}
}
我将函数changeImage分配给了一个按钮。该按钮的代码如下所示:
<button type="button" onclick="changeImage()">Change Image</button>
由于某种原因,if语句内部的boolean语句总是返回false,尽管Element的src值确实是“me.png”。我认为这是我如何编写相等语句的问题,但我不知道如何在javascript中编写一个相等的语句,如果src值是“me.png”则返回true,如果是,则返回false src值是“me2.png”。任何人?
答案 0 :(得分:4)
变化:
if (document.getElementById("changepic").src === "me.png"){
要:
if (document.getElementById("changepic").src.match(/me\.png$/)){
因为.src通常会包含图像的完整路径,即使您没有在HTML中指定它。
答案 1 :(得分:2)
问题不在于您的平等,而在于
document.getElementById("changepic").src
,可能不会返回您认为它返回的内容。试试
console.log(document.getElementById("changepic").src)
并确认它确实是“me.png”。我打赌其他的东西。
请注意,在js中,===
测试类型和值的相等性,其中==将更松散地测试相等性;它更宽容。例如
2 === "2" // false because not the same type
2 == "2" // true because == tries to make the types lines up, then tests
答案 2 :(得分:1)
“使用基URI将相对URI解析为完整URI。[RFC1808],第3节,定义了此过程的规范算法。有关基URI的更多信息,请参阅链接一章中有关基URI的部分。 。“
从这里开始:http://www.w3.org/TR/1999/REC-html401-19991224/types.html#type-uri
比较时,你应该只看“最右边”的字符。
例如
var mystr = document.getElementById("changepic").src
mystr.substr(len(mystr)-6,6) === "me.png"