我有这个函数,它应该在找到它时返回一个对象,但它没有这样做。 我做错了什么?
var getEl = function(title){
var theInputs = $('input[type=text], input[type=radio], input[type=checkbox], select, textarea')
theInputs.each(function(){
if (this.title==title){
getEl = this
console.log('found it!')
}
})
}
console.log(getEl('Office Status'))
我知道它有效,因为发现它是在控制台上输出的,但是控制台报告未定义为此行的输出:
console.log(getEl('Office Status'))
答案 0 :(得分:2)
var getEl = function(title){
var result;
var theInputs = $('input[type=text], input[type=radio], input[type=checkbox], select, textarea')
theInputs.each(function(){
if (this.title==title){
result = this
console.log('found it!')
return false; // break the loop
}
});
return result;
}
覆盖函数变量的值将不起作用。您想要返回结果。
修改强>
话虽这么说,你应该能够用这个替换整个事情:
var $result = $(":input[title='" + title + "']");
if(result.length > 0) return $result[0];
虽然如果你需要专门只获得这3种类型的输入而不是任何输入,它需要进行一些修改。这样的事情(使用现有的theInputs
变量):
var $result = theInputs.filter("[title='" + title + "']");
答案 1 :(得分:1)
您需要从函数中返回元素
var getEl = function(title){
var el;
var theInputs = $('input[type=text], input[type=radio], input[type=checkbox], select, textarea')
theInputs.each(function(){
if (this.title == title){
el = this;
return false;
}
})
return el;
}