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").
常见错误/拼写错误:你正在使用=(赋值)而不是==(比较).更改:
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)