例如,我有函数isPercentage,它使用在调用isPercentage的任何函数中定义的值:
isPercentage=function(){
if (value<1){
value=value*100;
console.log(value);
$(this).val(value);
}else if(value>100){
value=value/100;
$(this).val(value);
}
}
$("#userDiscount").change(function(){
var value=$(this).val();
isPercentage();
});
但是,当$(“#userDiscount”)发生更改时,我收到“未定义值”错误。如何以这样的方式定义“值”,即isPercentage()然后可以选择它。
谢谢!
答案 0 :(得分:4)
当你调用一个函数时,它会在自己的上下文中执行。这意味着,当调用isPercentage()
时,内部的this
值 不同 ,而不是该函数之外。
isPercentage()
不知道value
是什么(因为它超出范围)而且this
不是您认为的那样。你需要告诉那个函数这些值是什么。
首先,您应将value
作为参数传递给isPercentage
,以便它可以使用该值。其次,您应该返回一个值,以便设置$(this).val()
。
var isPercentage = function(value){
if (value<1){
value = value*100;
} else if(value>100){
value = value/100;
}
return value;
};
$("#userDiscount").change(function(){
var value = $(this).val();
value = isPercentage(value);
$(this).val(value);
});
答案 1 :(得分:0)
我可能会通过捕获函数内部的实际元素来与Rocket略有不同。我可能会更改函数的名称,以便在此上下文中有意义。
function processValue(e) {
var element = e.currentTarget;
var value = $(element).val();
if (value < 1) {
value = value * 100;
$(element).val(value);
} else if (value > 100) {
value = value / 100;
$(element).val(value);
}
}
$("#userDiscount").on('change', processValue);