将数组值传递给函数
passing array values into a function
在下面的脚本中,console.log返回了正确的值,并且两个警报都触发了。但是,该值未定义。
你知道我做错了什么吗?
jQuery(document).ready(function(){
jQuery("#customfield_21070").attr('style','width:60px');
jQuery("#customfield_21070").attr('disabled','disabled');
var customfields = [
'#customfield_11070',
'#customfield_11071',
'#customfield_20071',
'#customfield_20072',
'#customfield_20073',
'#customfield_20074',
];
for(var i=0, len=customfields.length; i<len; i++) {
console.log(customfields[i]);
jQuery(customfields[i]).keyup(function(){
alert('calculate');//FIRES
calculateSum();
});
}
function calculateSum() {
var sum = 0;
alert('value: ' + this.value);//UNDEFINED
if(!isNaN(this.value) && this.value.length!=0 && this.id !== "customfield_21070") {
sum += parseFloat(this.value);
}
jQuery("#customfield_21070").val(sum.toFixed(2));
}
});
使用Function.prototype.call()
:
使用给定的
this
值和提供的参数调用函数单独.
第一个参数是thisArg
:
this
的值提供了fun的调用。请注意,this
可能不会是方法看到的实际值:如果方法是中的函数非严格模式代码,null和undefined将被全局对象,原始值将被装箱。
因此,将this
从处理程序函数传递给calculateSum
,如下所示:
jQuery(customfields[i]).keyup(function(){
calculateSum.call(this);
});
@canon
是绝对正确的,以下是他所说的将解决您的问题。
你可以这样写:-
jQuery(document).ready(function () {
jQuery("#customfield_21070").attr('style', 'width:60px');
jQuery("#customfield_21070").attr('disabled', 'disabled');
var customfields = [
'#customfield_11070',
'#customfield_11071',
'#customfield_20071',
'#customfield_20072',
'#customfield_20073',
'#customfield_20074',
];
for (var i = 0, len = customfields.length; i < len; i++) {
jQuery(customfields[i]).keyup(function () {
calculateSum(this);//Edited
});
}
function calculateSum(param) {//Edited
var sum = 0;
alert('value: ' + param.value);//UNDEFINED
if (!isNaN(param.value) && param.value.length != 0 && param.id !== "customfield_21070") {//Edited
sum += parseFloat(param.value);
}
jQuery("#customfield_21070").val(sum.toFixed(2));
}
});
这反映了您的alert
中的正确值。**Tested**
相关文章:
- 如何将值传递给wicket中的javascript函数
- 需要将select标记选项值传递给ajax函数
- 在key up函数上将文本框值传递给javascript
- 将文本框值传递给javascript函数
- 如何解决将值传递给javascript函数时的错误
- 将参数值传递给javascript函数
- 将文本框值传递给JS函数以转换为JSON
- 如何将JS函数中的值传递给laravel控制器
- 将选定的值传递给jquery函数
- 将列表值传递给jQuery单击函数
- 如何将剃刀视图模态属性值传递给javascript函数
- 如何从代码隐藏将布尔值传递给 JavaScript 函数
- 将值与MySQL一起传递,将检索到的值作为JavaScript中的隐藏值传递给AJAX函数
- 无法将值传递给 jsp 中的警报函数
- 将强类型的 ViewModel 值传递给 Javascript 函数
- 将结果集值传递给 JavaScript 函数
- 将值传递给 JavaScript 函数 onclick
- 将多个选择值传递给 Javascript API 函数
- 如何从无限循环的Javascript函数将值传递给MySQL
- 使用 setTimeout 时将值传递给 javascript 中的函数