JavaScript函数无法返回元素(Javascript function fails to re

2019-06-17 11:37发布

所以我会继续工作Handsontable jQuery插件目前一个项目,我已经写了一些自定义的功能与它合作。

我目前遇到的麻烦的功能是一个我写返回当前选定单元格(当用户只选择一个,而不是多了,是被检查)。

这里是我的代码:

function getCurrentCell(){
    var selection = $('div.current');
    var left = selection.offset().left;
    var right = left + selection.width();
    var top = selection.offset().top;
    var bottom = top + selection.height();
    $('div.active').find('table').find('td').each(function(){
        if($(this).offset().left >= left && $(this).offset().left <= right && $(this).offset().top >= top && $(this).offset().top <= bottom){
            return this;
        }
    });
    return false;
}

但是,每当我调用该函数,例如:

var cell = getCurrentCell();

然后试图alert(cell)console.log(cell) ,我得到一个false返回值。

我最初的想法是,不知怎的,坐标将被关闭,因此没有元素会被发现符合条件的,所以我试图通过增加检查...

$(this).css('background-color', 'black');

...权之前return this行。 这样一来,如果有合适的表格单元格被发现,它会显示在屏幕上的代码实际上返回之前。 有趣的是,正确的电池总是有其背景颜色适当地改变。 所以,这个功能找到正确的细胞,它是执行,如果循环内的代码,但是当我尝试获取返回值到一个变量,该变量始终是假的。

任何帮助将是巨大的! 太感谢!

Answer 1:

您正在使用.each()与函数

.each(function(){
    ...
    return this;
});
return false;

这将从回调返回(也许停止各环路,如果thisfalse ),但从来没有打出来,并且从外返回getCurrentCell功能! 所以,一个总是返回false

快速解决:

var result = false;
<...>.each(function(){
    if (<condition>) {
        result = <found element>;
        return false; // break each-loop
    }
});
return result; // still false if nothing found


Answer 2:

目前有在Handsontable获取当前的选择一个更好的办法。 只需使用从Handsontable以下方法:

handsontable('getSelected') -当前选择的小区的返回索引作为数组[ topLeftRowtopLeftColbottomRightRowbottomRightCol ]

handsontable('getCell', row, col) -对于给定的返回元件row,col

所有的方法进行说明: https://github.com/warpech/jquery-handsontable



文章来源: Javascript function fails to return element