我有一些验证功能,我想为数组中的每个元素添加事件。
var items=[
"metraz_od",
"metraz_do",
"cena_za_metr_od",
"cena_za_metr_do",
"cena_od",
"cena_do",
"pietro_min",
"pietro_max",
"rok_budowy_od",
"rok_budowy_do",
"ilosc_pieter_od",
"ilosc_pieter_do",
"minimalna_wysokosc"
];
var items_float=[
"cena_tys"
];
function add_events(array, event, function_name){
for(var i=0; i<array.length; i++){
(function(e){
console.log("W funkcji "+array+" | "+event+" | "+function_name+" | ");
document.getElementsByName(items[e])[0].addEventListener(event, function() {
function_name(array[e])
})
})(i);
}
}
add_events(items,"keyup","validate_numb");
但它不起作用,可能是因为使用函数名(字符串)作为函数参数(函数add_events) - 我想我不能这样做:D
我能做些什么?
编辑:这是该功能:
function validate_numb(name){//argumentem jest nazwa pola
var input = document.getElementsByName(name)[0].value;
var parsed_input = parseInt(input);//wartosc pola zamieniana na liczbe całkowitą
if(isNaN(parsed_input) || parsed_input<0 || input!=parsed_input){
document.getElementsByName(name)[0].value="";
console.log("Validation of "+name+" failed");
return false;
}else{
return true;
}
}
答案 0 :(得分:3)
您需要传递对函数的引用,而不是函数名称。所以:
add_events(items,"keyup", validate_numb);
- 不加引号
不是
add_events(items,"keyup", "validate_numb");
答案 1 :(得分:1)
您可以切换
function_name(array[e])
与
window[function_name](array[e]))