我正在尝试为页面上的所有字段创建一个通用点击事件功能,主要检查目标是空白还是包含用户输入的值。但是,我希望这个泛型函数检查是否存在更具体的函数,如果找到,则允许它处理目标值的验证。 例如:
function genValueCheck(event) {
var af = event.target.id+'_checkValue';
if (typeof af == 'function') runFunction(af,[event]); // logic specific to this field
else {
// logic for checking for blanks, etc which applies to all fields
}
}
但是,typeof在上面的示例中返回'string',因为它应该检查'af'的类型,而不是'af'包含的内容,即函数的名称。
我试图做的是什么?
提前致谢。
答案 0 :(得分:2)
那是因为af
是一个字符串。如果您的函数存在于全局范围中,请使用window[af]
。这应该适合你:
function genValueCheck(event) {
var af = event.target.id+'_checkValue';
if (typeof window[af] == 'function') runFunction(af,[event]); // logic specific to this field
else {
// logic for checking for blanks, etc which applies to all fields
}
}
答案 1 :(得分:2)
创建一个包含所有函数的对象,这样就不会污染全局命名空间,然后使用括号表示法来检索它:
var validators = {};
validators.checker1 = function() { ... };
function genValueCheck(event) {
var af = event.target.id+'_checkValue';
if (typeof validators[af] == 'function') {
validators[af](event); // logic specific to this field
} else {
// logic for checking for blanks, etc which applies to all fields
}
}