因此,我正在爲一個項目使用Handsontable jQuery插件,並且我已經編寫了一些自定義函數來處理它。Javascript函數無法返回元素
我目前遇到的問題是我編寫的函數返回當前選定的單元格(當用戶只選擇了一個,而不是多個,並檢查是)。
這裏是我的代碼:
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
一行。這樣,如果找到正確的表格單元格,它將在實際返回代碼之前顯示在屏幕上。有趣的是,正確的單元格總是已將其背景顏色正確更改。所以,這個函數是找到正確的單元格,並且它正在執行if循環內的代碼,但是當我嘗試將返回值捕獲到變量中時,該變量總是爲false。
任何幫助將是巨大的!謝謝!
我明白你的問題是使用這個函數,並且你找到了解決方案,爲什麼你的函數不工作,但我強烈建議你使用@warpech發佈的解決方案。不僅因爲Handsontable試圖保持邏輯和DOM分離,而且因爲如果屏幕上有多於幾十行,這會中斷。虛擬渲染將導致所選單元格不被渲染,這意味着即使您選擇了單元格,也無法使用DOM來找到它。而是使用'hotInstance.getSelected()'。 – ZekeDroid 2015-09-19 21:15:49