Javascript 使用变量与获取输入值时substr()的结果不同

Javascript 使用变量与获取输入值时substr()的结果不同,javascript,jquery,substring,substr,Javascript,Jquery,Substring,Substr,我在一些地方使用了一些javascript来检查电子邮件地址的最后3个字符。我不明白的是,为什么当我获取一个集合变量的子字符串时,与获取输入值时,会得到不同的结果 下面的代码将以值“com”发出警报 但是,此代码获取的输入值警报值为:“om” 有人能解释一下为什么上面两行代码有不同的结果吗 这里是一个尝试传递文本框的值的长度,而不是所选元素的长度 alert($("#email").val().toLowerCase().substr($("#email").val().length - 3,

我在一些地方使用了一些javascript来检查电子邮件地址的最后3个字符。我不明白的是,为什么当我获取一个集合变量的子字符串时,与获取输入值时,会得到不同的结果

下面的代码将以值“com”发出警报

但是,此代码获取的输入值警报值为:“om”

有人能解释一下为什么上面两行代码有不同的结果吗


这里是一个

尝试传递文本框的
值的
长度
,而不是
所选元素的
长度

alert($("#email").val().toLowerCase().substr($("#email").val().length - 3, 3));
//-------------------------------------------------------^^^^^
实现这一目标的最佳途径是

var value = $("#email").val().toLowerCase();
alert(value.substr(-3)); 
以负数传递起始值将从后面删除字符串


$(“#email”).length
$(“#email”).val()不同。length
但是当然,将
$(“#email”).val()存储在变量中,而不是重复。哇,太简单了。谢谢@Oriol是的,我计划将其存储在一个变量中,这样它就不会重复了。@Jmh2013很乐意帮助!:)
alert($("#email").val().toLowerCase().substr($("#email").val().length - 3, 3));
//-------------------------------------------------------^^^^^
var value = $("#email").val().toLowerCase();
alert(value.substr(-3));