Javascript函数";把这个退回来;不起作用
我有以下函数,它只运行一个对象列表并返回正确的对象:Javascript函数";把这个退回来;不起作用,javascript,jquery,Javascript,Jquery,我有以下函数,它只运行一个对象列表并返回正确的对象: function findLine(textElement,caretIndex){ jQuery.each(textElement.lines(), function() { if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) { alert(this); retu
function findLine(textElement,caretIndex){
jQuery.each(textElement.lines(), function() {
if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
alert(this);
return this;
}
});
}
奇怪的是,当我运行line=findLine(textElement,caretIndex)代码>触发函数中的警报并返回正确的结果。因此此
是正确的值,但是当触发函数外部的第二个警报时,我得到未定义的
当我从函数返回值时,可能发生了一些错误,或者与将该值赋给变量有关。我在这里做错了什么?问题是您在返回此
在jQuery的回调中。每个
方法,而您的查找行
都不会返回任何内容
function findLine(textElement,caretIndex){
return jQuery.each(textElement.lines(), function() {
if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
alert(this);
return this;
}
});
}
函数findLine(textElement,caretIndex){
返回jQuery.each(textElement.lines(),function()){
if(this.startIndex=caretIndex){
警惕(这个);
归还这个;
}
});
}
如果您返回jQuery。每次调用都会得到一个jQuery对象,其中包含您想要的每个这个。问题是,您要返回这个是在jQuery的回调中。每个方法,而您的findLine
都不会返回任何内容
function findLine(textElement,caretIndex){
return jQuery.each(textElement.lines(), function() {
if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
alert(this);
return this;
}
});
}
函数findLine(textElement,caretIndex){
返回jQuery.each(textElement.lines(),function()){
if(this.startIndex=caretIndex){
警惕(这个);
归还这个;
}
});
}
如果返回jQuery。每次调用都会得到一个jQuery对象,其中包含您想要的每个这个。来自jQuery文档:
通过使回调函数返回false,我们可以在特定迭代中中断$.each()循环。返回非false与for循环中的continue语句相同;它将立即跳到下一个迭代
因此,您的返回这个
语句本质上是一个继续
语句,因为这个
是非false的。将您的函数更改为此可能会起作用(未经测试…可能有比.each()更好的函数可供使用,例如.filter()或.grep()):
函数findLine(textElement,caretIndex){
var结果;
每个(textElement.lines(),function()){
if(this.startIndex=caretIndex){
警惕(这个);
结果=这个;
return false;//在回调中返回false只会导致循环退出
}
});
返回结果;
}
来自jQuery文档中关于:
通过使回调函数返回false,我们可以在特定迭代中中断$.each()循环。返回非false与for循环中的continue语句相同;它将立即跳到下一个迭代
因此,您的返回这个
语句本质上是一个继续
语句,因为这个
是非false的。将您的函数更改为此可能会起作用(未经测试…可能有比.each()更好的函数可供使用,例如.filter()或.grep()):
函数findLine(textElement,caretIndex){
var结果;
每个(textElement.lines(),function()){
if(this.startIndex=caretIndex){
警惕(这个);
结果=这个;
return false;//在回调中返回false只会导致循环退出
}
});
返回结果;
}
您只是从函数间返回,而不是从主函数返回。这不是每个
所做的。我想你在想map
或grep
。您没有从findLine
返回任何内容。您只是从函数间返回,而不是从主函数返回。这不是每个
所做的。我想你在想map
或grep
。而且您没有从findLine
返回任何内容。还值得注意的是,如果您试图减少数组中的项目,您可能真的想要一个调用。还值得注意的是,如果您试图减少数组中的项目,您可能真的想要一个调用
function findLine(textElement,caretIndex){
var result;
jQuery.each(textElement.lines(), function() {
if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
alert(this);
result = this;
return false; // returning false in the callback just causes the loop to exit
}
});
return result;
}