破解我的代码 - 如何在javascript

时间:2016-06-08 11:55:28

标签: javascript function

我有一些验证功能,我想为数组中的每个元素添加事件。

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;
        }
    }

2 个答案:

答案 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]))