2014-05-20 58 views
-1

在此函數中,用戶在下拉菜單中選擇一個值,並選擇任何值,它會將var B更改爲其對應的值。如果else語句無法正常工作

function test(){ 
    var A = ["", "A", "B", "C"]; 
    var B = document.getElementById("myfile"); 

    if(A.value = "A"){ 
     B.selectedIndex = [2]; 
    } 
    else if(A.value = "B"){ 
     B.selectedIndex = [4]; 
    } 
    else if(A.value = "C"){ 
     B.selectedIndex = [1]; 
    } 
} 

我遇到的問題是,每一次我選擇B或C時,它總是默認爲指數[2],而不是[4]或[1]。

+5

你用'=='比較事情,而不是'='。 –

回答

5

您正在指定何時進行比較。用於比較,使用==而不是=

if(A.value == "A"){ 
    B.selectedIndex = [2]; 
} 
else if(A.value == "B"){ 
    B.selectedIndex = [4]; 
} 
else if(A.value == "C"){ 
    B.selectedIndex = [1]; 
} 
+1

我建議「===」 –

+0

我試過使用「==」和「===」,但現在它根本不改變B – ipoood

+0

正如書面所述,「A.value」不存在。 'A'只是一個數組。 *設置* value屬性會成功,並且每次設置索引'2'。沒有看到真正的A.value來自哪裏(假設它不是我們在示例代碼中看到的),很難說出了什麼問題。 –

2

您正在爲您的ifs分配值,但未對其進行測試。這將返回分配的值。除非下面的值被分配,並且因此返回如果條件將爲真,,一個空字符串未定義的NaN。這就是爲什麼你要進入第一個if語句的塊。

更改單等於雙或三等於

if(A.value == "A"){ 
    B.selectedIndex = [2]; 
} 
else if(A.value == "B"){ 
    B.selectedIndex = [4]; 
} 
else if(A.value == "C"){ 
    B.selectedIndex = [1]; 
} 
+0

實際上,賦值運算符會返回您分配的值。它不返回布爾值;分配失敗是沒有辦法的。嘗試'if(foo = 0){}'。 –

+0

感謝您指出我的錯誤。我更新了我的答案。 – Jeffpowrs

0

使用==不是=

你的語句檢查,如果可能設定值。(每次...)

+0

實際上,賦值運算符會返回您分配的值。 –

3

=是分配

==是測試平等對於內容

===是測試內容和數據類型是否相等

就你而言,=肯定是一個錯字。我建議使用===以獲得最大的程序穩定性。

一些民間人士傾向於寫"A" == A.value所以一個錯位的任務給你一個語法錯誤。

+0

+1 ===,確保您的數據類型匹配的最佳做法 –