Javascript函数无法返回元素
所以我现在正在为一个项目使用Handsontable jQuery插件,我已经编写了一些自定义函数来处理它。
我目前遇到问题的function是我编写的用于返回当前所选单元格的function(当用户只选择一个而不是多个,并且检查是的时)。
这是我的代码:
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 = 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
行之前。 这样,如果找到了正确的表格单元格,它将在实际返回代码之前显示在屏幕上。 有趣的是,正确的单元格总是正确地改变其背景颜色。 因此,此函数正在查找正确的单元格,并且它正在if循环中执行代码,但是当我尝试将返回值捕获到变量中时,该变量始终为false。
任何帮助都会很棒! 谢谢!
您正在使用带有函数的.each()
.each(function(){ ... return this; }); return false;
这将从回调中返回(如果this
是false
话,可能会停止每个循环),但永远不会从外部getCurrentCell
函数中断并返回! 所以,那个总会返回false
。
快速解决:
var result = false; <...>.each(function(){ if () { result = ; return false; // break each-loop } }); return result; // still false if nothing found
目前有一种更好的方法可以在Handsontable中选择当前。 只需使用Handsontable中的以下方法:
handsontable('getSelected')
– 返回当前所选单元格的索引作为数组[topLeftRow
,topLeftCol
,bottomRightRow
,bottomRightCol
]
handsontable('getCell', row, col)
– 给定row,col
返回元素row,col
所有方法都在这里描述: https : //github.com/warpech/jquery-handsontable