Javascript 无法调用方法';toLowerCase';未定义的
我正试图重构我的js代码,使之更加枯燥,但还是遇到了这个错误。这是我的密码Javascript 无法调用方法';toLowerCase';未定义的,javascript,jquery,Javascript,Jquery,我正试图重构我的js代码,使之更加枯燥,但还是遇到了这个错误。这是我的密码 function validate_field(e){ console.log(typeof e); $(e).focusout(function(e){ var price = $(e).val(); var number = parseInt(price, 10); console.log(number) if (number <
function validate_field(e){
console.log(typeof e);
$(e).focusout(function(e){
var price = $(e).val();
var number = parseInt(price, 10);
console.log(number)
if (number < 0)
{
$(e).val(0);
}
})
}
$(function(){
validate_field('#price');
})
功能验证\u字段(e){
控制台日志(e型);
$(e).聚焦输出(函数(e){
var价格=$(e.val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(e).val(0);
}
})
}
$(函数(){
验证_字段(“#价格”);
})
根据stacktrace,错误在这里的某个地方var price=$(e).val()代码>
这里缺少什么?您正在用函数的e
变量干扰e
参数。应该是:
function validate_field(s) { // here also ? I have set "s" as parameter, you can set any word you like
console.log(typeof s); // noticed the difference here?
$(s).focusout(function(e) { // noticed the difference here?
var price = $(this).val();
var number = parseInt(price, 10);
console.log(number)
if (number < 0)
{
$(e).val(0);
}
});
}
function validate_字段{//这里也是?我已经将“s”设置为参数,您可以设置任何您喜欢的单词
console.log(typeof s);//注意到这里的区别了吗?
$(s).focusout(函数(e){//注意到这里的区别了吗?
var price=$(this.val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(e).val(0);
}
});
}
您还可以像@dakait那样更改事件参数以进行微小更改。您正在用函数的e
变量干扰e
参数。应该是:
function validate_field(s) { // here also ? I have set "s" as parameter, you can set any word you like
console.log(typeof s); // noticed the difference here?
$(s).focusout(function(e) { // noticed the difference here?
var price = $(this).val();
var number = parseInt(price, 10);
console.log(number)
if (number < 0)
{
$(e).val(0);
}
});
}
function validate_字段{//这里也是?我已经将“s”设置为参数,您可以设置任何您喜欢的单词
console.log(typeof s);//注意到这里的区别了吗?
$(s).focusout(函数(e){//注意到这里的区别了吗?
var price=$(this.val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(e).val(0);
}
});
}
您还可以像@dakait那样更改事件参数以进行微小更改。试试看
function validate_field(e){
console.log(typeof e);
$(e).focusout(function(ev){
-------------------------------^ here you are redeclaring the e previously passed as selector
var price = $(e).val();
var number = parseInt(price, 10);
console.log(number)
if (number < 0)
{
$(e).val(0);
}
})
}
$(function(){
validate_field('#price');
})
功能验证\u字段(e){
控制台日志(e型);
$(e).聚焦输出(功能(ev){
-------------------------------^在这里,您将重新声明以前作为选择器传递的e
var价格=$(e.val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(e).val(0);
}
})
}
$(函数(){
验证_字段(“#价格”);
})
试试看
功能验证\u字段(e){
控制台日志(e型);
$(e).聚焦输出(功能(ev){
-------------------------------^在这里,您将重新声明以前作为选择器传递的e
var价格=$(e.val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(e).val(0);
}
})
}
$(函数(){
验证_字段(“#价格”);
})
重新分配变量会导致问题
function validate_field(field){ // both variable should not be same e & 'e' of inside function
console.log(typeof e);
$(field).focusout(function(e){
var price = $(field).val();
var number = parseInt(price, 10);
console.log(number)
if (number < 0)
{
$(field).val(0);
}
})
}
$(function(){
validate_field('#price');
})
function validate_field(field){//两个变量不应与内部函数的e和“e”相同
控制台日志(e型);
$(字段).focusout(函数(e){
var price=$(字段).val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(字段).val(0);
}
})
}
$(函数(){
验证_字段(“#价格”);
})
或
可以直接使用下面的代码,而无需调用脚本中的其他函数
$(function(){
$('#price').focusout(function(e){
var price = $(this).val();
var number = parseInt(price, 10);
console.log(number)
if (number < 0)
{
$(this).val(0);
}
})
});
$(函数(){
$('#price').focusout(函数(e){
var price=$(this.val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(此).val(0);
}
})
});
重新分配变量会导致问题
function validate_field(field){ // both variable should not be same e & 'e' of inside function
console.log(typeof e);
$(field).focusout(function(e){
var price = $(field).val();
var number = parseInt(price, 10);
console.log(number)
if (number < 0)
{
$(field).val(0);
}
})
}
$(function(){
validate_field('#price');
})
function validate_field(field){//两个变量不应与内部函数的e和“e”相同
控制台日志(e型);
$(字段).focusout(函数(e){
var price=$(字段).val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(字段).val(0);
}
})
}
$(函数(){
验证_字段(“#价格”);
})
或
可以直接使用下面的代码,而无需调用脚本中的其他函数
$(function(){
$('#price').focusout(function(e){
var price = $(this).val();
var number = parseInt(price, 10);
console.log(number)
if (number < 0)
{
$(this).val(0);
}
})
});
$(函数(){
$('#price').focusout(函数(e){
var price=$(this.val();
var编号=parseInt(价格,10);
控制台日志(编号)
如果(数字<0)
{
$(此).val(0);
}
})
});
您希望e是什么类型的元素?它将始终是一个表单组件,如input/select?string,根据console.log(类型e),它是字符串代码>e-这是什么元素。。。。?您是否尝试过像$(this).val()…?这样使用jquery选择器的字符串?类似于
#someId
是的,没错。我将这个字符串作为参数传递,您希望e是什么类型的元素?它将始终是一个表单组件,如input/select?string,根据console.log(类型e),它是字符串代码>e-这是什么元素。。。。?您是否尝试过像$(this).val()…?这样使用jquery选择器的字符串?类似于
#someId是的,没错。我把这个字符串作为参数传递