2011-05-29 93 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"