2010-12-05 143 views
0

我正在處理這個腳本,並且由於某種原因,它的行爲就好像fn.style.borderColor總是等於#F00。我只想要第二個執行,當且僅當第一個if已經執行。JS if if not working properly

function vfn() { 
    if (fnl<1){ 
     na.innerHTML= "This field is required."; 
     fn.style.borderColor="#F00"; 
    } 
    else if (fn.style.borderColor="#F00" && fnl>1) { 
     if(lnl>1){ 
     na.innerHTML= "OK"; 
     setTimeout("na.innerHTML = ''",1500) 
     } 
     fn.style.borderColor="#0F0"; 
     setTimeout("fn.style.borderColor='';",1500) 
    } 
    return false 
} 

我試過使用變量,做了這樣的事情,但它根本不起作用。

var error = 1 
if (error = 1) { 
    alert("error1"); 
    var error = 2 
} 
else if (error == "2") { 
    alert("error2") 
    var error = 1 
} 

那麼我該如何做這項工作?

------------------------------- >>編輯< < ---- --------------------------------

好了,我把它改成這個

function vfn() { 
     if (fnl<1){ 
     na.innerHTML= "This field is required."; 
     fn.style.borderColor="#F00"; 
     } 
     else if (fn.style.borderColor == "#F00" && fnl>1){ 
     if(lnl>1){ 
      na.innerHTML= "OK"; 
      setTimeout("na.innerHTML = ''",1500)} 
     fn.style.borderColor="#0F0"; 
     setTimeout("fn.style.borderColor='';",1500) 
     } 

     return false} 

以及發生的情況是當字段爲空時邊界顏色變爲紅色,這是應該發生的情況,但是當字段填充正確時,它被SUPPOSED變爲綠色,然後在1.5秒後,切換回默認情況下,但實際發生的情況是它保持紅色,就好像它忽略了else代碼塊,即使該字段是alrea dy red(fn.style.borderColor =「#F00」)。

回答

0

儘量讓你否則,如果是這樣的:

else if (fn.style.borderColor == "rgb(255, 0, 0)" && fnl>1){

6

常見錯誤/錯字:你使用=(分配),而不是==(比較)。變化:

else if (fn.style.borderColor="#F00" 

else if (fn.style.borderColor=="#F00" 

更新:我會建議嘗試你以前使用一個額外的變量的方法,雖然你可能有過類似的錯誤導致它不以前工作。嘗試存儲一個標誌,指示狀態,而不是明確的比較borderColor,因爲瀏覽器可以從#F00改變其內部表示別的東西:

var isRed = false; 
function vfn() { 
    if (fnl<1){ 
     na.innerHTML= "This field is required."; 
     fn.style.borderColor="#F00"; 
     isRed = true; 
    } 
    else if (isRed && fnl>1) { 
     if(lnl>1){ 
     na.innerHTML= "OK"; 
     setTimeout("na.innerHTML = ''",1500) 
     } 
     fn.style.borderColor="#0F0"; 
     isRed = false; 
     setTimeout("fn.style.borderColor='';",1500) 
    } 
    return false 
} 
+2

嗯,我們已經*全部*的那些有趣的地方之一,至少有一千倍...... =) – 2010-12-05 18:15:06

+2

更好的是,使用`===`而不是`==`。 – 2010-12-05 18:16:17