JS if语句不能正常工作

Sea*_*ean 0 javascript variables

我正在编写这个脚本,由于某种原因,它表现得好像fn.style.borderColor总是等于#F00.我想要的只是当第一个if执行时​​第二个执行.

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
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用变量并做了类似的事情,但它根本不起作用.

var error = 1
if (error = 1) {
    alert("error1");
    var error = 2
}
else if (error == "2") {
    alert("error2")
    var error = 1
}
Run Code Online (Sandbox Code Playgroud)

那我怎么能做这个呢?

------------------------------------- >>编辑<< -------- ----------------------------

好的,所以我把它改成了这个

  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}
Run Code Online (Sandbox Code Playgroud)

发生的事情是当字段为空时边框颜色变为红色,这是应该发生的事情,但是当字段被正确填充时,它被支持变为绿色,然后在1.5秒后,更改回默认值,相反,实际发生的是它保持红色,好像它忽略了else代码块,即使该字段已经是红色(fn.style.borderColor ="#F00").

cas*_*nca 6

常见错误/拼写错误:你正在使用=(赋值)而不是==(比较).更改:

else if (fn.style.borderColor="#F00"
Run Code Online (Sandbox Code Playgroud)

else if (fn.style.borderColor=="#F00"
Run Code Online (Sandbox Code Playgroud)

更新:我建议您尝试使用额外变量的先前方法,尽管您可能遇到类似的错误,导致它无法使用.尝试存储指示状态的标志,而不是显式比较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
}
Run Code Online (Sandbox Code Playgroud)

  • 啊,其中一个有趣的地方我们*都*,至少一千次...... =) (2认同)
  • 更好的是,使用`===`而不是`==`. (2认同)