2011-05-29 77 views
1

所以,我是Javascript的新手。在我的代码我有一个声明,像这样的图像对象:Javascript等于声明

 <img src="me.png" id="changepic" alt="That's me!"> 

在我的脚本代码,我想写返回true布尔语句当src为“me.png”,因为它是在如果不是“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语句内的布尔语句总是返回false,虽然元素的src值真的是“me.png。”我认为这是我编写平等声明时遇到的一个问题,但我不知道如何在JavaScript中编写等式语句,如果src值为“me.png”,则返回true,如果src值是“me2.png”。任何接受者?

+0

当你遇到这些类型的问题没有像你期望的那样进行评估时,首先将问题值记录到控制台,或者临时向你的函数添加一个警报(例如):alert(document.getElementById ('changepic'));' – nnnnnn 2011-05-29 23:54:07

回答

4

变化:

if (document.getElementById("changepic").src === "me.png"){ 

要:

if (document.getElementById("changepic").src.match(/me\.png$/)){ 

为的.src通常包含对图像的完整路径,即使你不指定它在HTML中。

2

的问题与您的平等,它与

document.getElementById("changepic").src 

其中,很可能无法返回你认为它返回。尝试

console.log(document.getElementById("changepic").src)

,并确认它真的是 “me.png”。我敢打赌其他的东西。

请注意,在js中,===测试类型和值的相等性,其中as ==将更宽松地测试相等性;它更宽容。例如

2 === "2" // false because not the same type 
2 == "2" // true because == tries to make the types lines up, then tests 
+0

src被spec定义为一个字符串。 – Hogan 2011-05-29 21:58:28

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"