JS if语句不能正常工作

时间:2010-12-05 18:13:21

标签: 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
}

我尝试使用变量并做了类似的事情,但它根本没有用。

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

那么我怎样才能做到这一点?

-------------------------------------&GT;&gt;编辑&LT;&LT; - ----------------------------------

好的,所以我把它改成了

  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}

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

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

如果看起来像这样,请尝试制作你的其他内容:

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