JavaScript在表行失去焦点时运行代码

JavaScript在表行失去焦点时运行代码,javascript,dom-events,onblur,Javascript,Dom Events,Onblur,我有一个html表,每当一行失去焦点时,我试图使用jJavascript触发一个事件,但“blur”事件似乎不正确,因为没有触发任何事件: (我正在做的快速示例) 小时 会议记录 小时 会议记录 我使用以下方法: var rows = document.getElementsByClassName("tableRow"); for(i = 0; i < rows.length; i++) { rows[i].addEventListener("b

我有一个html表,每当一行失去焦点时,我试图使用jJavascript触发一个事件,但“blur”事件似乎不正确,因为没有触发任何事件:

(我正在做的快速示例)


小时
会议记录
小时
会议记录
我使用以下方法:

var rows = document.getElementsByClassName("tableRow");

for(i = 0; i < rows.length; i++) {
    rows[i].addEventListener("blur", function(){console.log("row left!");});
}
var rows=document.getElementsByClassName(“tableRow”);
对于(i=0;i
但是控制台中没有显示任何内容-我是否误解了事件/DOM结构?

行可能永远不会接收焦点,其中的单元格会接收焦点

不幸的是,
blur
没有气泡。但是如果在每个单元格上挂起
blur
,然后单击其中一个单元格使其聚焦,然后单击其他单元格使其聚焦,则应该可以:

var cells=document.querySelectorAll(“.tableRow td”);
对于(变量i=0;i
单击下面的单元格以使其具有焦点

小时 会议记录 小时 会议记录
单击此处将焦点移开

“焦点”是发生在交互式元素上的事情,如
@Pointy:不,非交互式元素也可以有焦点。@我的单词选择不当-我使用的是“模糊”“事件,因为它不是输入元素,用于跨浏览器支持。@宏人:表行可能永远不会接收焦点。如果单击表格单元格,该单元格将接收焦点,但不会接收行。哇,这似乎有点复杂,并且对用户代理的解释是开放的。不幸的是,每当单元格失去焦点而不是行时,就会触发此操作(即,如果单击相邻单元格,代码仍会触发)但我特别关注这一行——考虑到这一行在技术上从未获得焦点,有可能吗?@MacroMan:你必须跟踪最后一个有焦点的单元格,并将它所在的行与你当前离开的行进行比较。或者使用
focusout
,但我认为Firefox不支持它。(抱歉,跑出门…)我故意使用模糊事件,因为我需要跨浏览器兼容,但我可能可以通过比较行来解决问题,正如您所建议的那样,这非常有意义。我仍然会标记为答案,因为它确实仍然回答了我的问题
我是否误解了事件/DOM结构?
-是的,因为行永远不会获得焦点,模糊事件也不会冒泡。为快速响应干杯:)如何知道哪个单元格丢失焦点?@Soorya-一如既往,它将从事件处理程序接收的事件对象的
target
属性中引用。
var rows = document.getElementsByClassName("tableRow");

for(i = 0; i < rows.length; i++) {
    rows[i].addEventListener("blur", function(){console.log("row left!");});
}