我正在处理这个脚本,出于某种原因,它表现得好像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;。)
答案 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){