html中if语句 的作用域,javascript – 为什么我的嵌套if和else语句不起作用?

我希望能够做的就是每次用户在输入字段中输入新字符时验证电子邮件.当输入字段为空时,它不应显示任何内容,但当它包含字母时,它应显示无效字符的位置.

我的代码有效但输入字段为空时不显示任何内容,因为它使用嵌套的“else”而不是它应该使用的那个.有人帮忙吗?提前致谢. andyy

var tick = "tick.png";

var cross = "cross.png";

var email_element = document.contact_form.email_field.value;

function validate_email(id) {

if ( email_element != '' ) {

var letters = /^[A-Za-z]+$/;

if ( document.contact_form.email_field.value.match(letters) )

{

document.getElementById(id).innerHTML = tick;

valid = true;

} else {

document.getElementById(id).innerHTML = cross;

valid = false;

}

} else {

document.getElementById(id).innerHTML = '';

}

return valid;

}

解决方法:

问题很可能是这一行:

var email_element = document.contact_form.email_field.value;

您正在分配一个等于电子邮件字段值的全局变量,然后再也不会更新该变量.这不会创建到字段当前值的“活动”链接,它只是存储执行该行时的值.这反过来意味着函数中的第一个if语句if(email_element!=”)正在评估电子邮件字段的非当前值.

将该行移动到函数内部的第一个内容,然后每次运行该函数时,您将获得该字段的最新(当前)值.

编辑:此外,您没有在非嵌套的else中为有效值分配值.您应该在函数中声明有效作为局部变量,并确保在每个if和else分支中正确设置它(或者在声明它时将其默认为false).作为thomasrutter

表示你当前没有声明你的函数中的var语句有效,这意味着它将被创建为一个全局变量,这反过来意味着当你不在非嵌套的其他地方给它一个值时你的函数将返回无论前一次调用已经有效的值. (实际上,根据您发布的代码,您根本不需要有效变量:您可以说返回true;或者返回false;直接在if / else结构的每个分支内.)

标签:javascript,if-statement,nested

来源: https://codeday.me/bug/20190729/1576133.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值