Javascript等式声明

时间:2011-05-29 21:43:46

标签: javascript html

所以,我是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”。任何人?

3 个答案:

答案 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"