我有一个表,他由 3 列和 n 行组成。我想做的是这个。当您将鼠标悬停在 td 上时,上面所有的 td 都将被“着色”,我尝试仅使用 onmouseover 和 box-shadow 执行此操作,但文本会出现在阴影上方。于是我想,为什么不直接做一个透明背景的div,然后把盒子阴影放在那里呢?当我在萤火虫中插入 div 时,效果很好。所以我继续尝试使用 jQuery 动态创建 div。他是我的js文件中的相关代码,适用于盒子阴影的东西。
TL;DR:我需要在所有 td 上创建 div,直接在您悬停的上方并做一个 box-shadow 插图
所有这些都在 td 鼠标上
var col , row, t=$(this);
col = t.index();
row= t.closest('tr').index();
var end = 3 * row + col -1;
while(end > 0){
var i=1;
var tdLeftPosition = $('td:eq('+ end-3 +')').offset().left;
var tdTopPosition = $('td:eq('+ end-3 +')').offset().top;
var tdWidth = $('td:eq(2)').css('width');
var tdHeight = $('td:eq(2)').css('height');
$("<div class = 'shadow-box' id='divTdOverlay"+i+"' style='height:"+ tdHeight+"px;width:"+ tdWidth +"px;top:"+ tdTopPosition +"px;left:"+ tdLeftPosition +"px;' />");
//This is the box shadowing that I have comented out
// $('td').slice(end-3, end-2).stop().animate({boxShadow: '0 0 170px #000000 inset'}, 'fast');
i++;
// used to get the td's position in the array one row up
end -= 3;
}
所以当我在我的网站上尝试鼠标悬停时,我收到了这个错误
语法错误,无法识别的表达式:NaN)
throw new Error("语法错误,无法识别的表达式:" +msg );
它位于未压缩的 jQuery 文件的第 4267 行
编辑:
弄清楚了。出于某种原因,end-3 部分导致了错误,所以我将它放在一个名为 prevrow 的变量中并用它替换了 end-3
var i=1;
var prevrow = end-3;
var tdLeftPosition = $('td:eq('+ prevrow +')').offset().left;
var tdTopPosition = $('td:eq('+ prevrow +')').offset().top;
var tdWidth = $('td:eq(2)').css('width');
var tdHeight = $('td:eq(2)').css('height');
但是div仍然没有出现。关于那个问题:如果有人有任何建议,我仍然会很感激他们。