0

我有这个函数,它应该在找到它时返回一个对象,但它没有这样做。我究竟做错了什么?

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'))
4

2 回答 2

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 + "']");
于 2013-05-14T19:45:15.437 回答
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;
}
于 2013-05-14T19:45:42.007 回答