多个HTML元素能同时获得焦点吗?

23

我正在编写一个JavaScript报表组件,需要将多个LI即列表作为一批进行选择,并提供视觉反馈。

我考虑使用onfocus事件。是否有可能同时让多个HTML元素获得焦点?

不是输入框,而是DIV,所以我不需要光标。我只想让几个DIV单独地“选定”,并着不同颜色以模拟多项选择。


为什么你想要使用多个onfocus事件?只需在单个onfocus事件后调用所有需要的内容即可。 - Luca Filosofi
他想让所有10个文本输入框中的光标闪烁,哼</讽刺> - Dan Heberden
不一定是输入,而是DIV,所以我不需要光标。 - Olaseni
刚看到你的评论。如何让“div”获得焦点?onfocus不是div的事件。http://www.w3schools.com/tags/tag_div.asp - nebkat
2
在HTML 4中,您可以通过JavaScript有效地为div分配焦点事件监听器。在HTML5中,onfocus是div的有效事件属性。同样,添加属性tabIndex="0"以将div添加到选项卡顺序中。 - Alohci
4个回答

39

不,你只能一次集中于一个元素。


是的,我必须在其他答案发布之前进行编辑,这样就不会引起抄袭的怀疑 ;) - Babiker
1
我想知道是否有关于证明这个的文档? - nick722

5
正如其他答案所述,每次只能有一个元素具有焦点。相反,您可以为每个“已选择”的元素添加一个类。
一个简单的例子(使用yui)是:
 <style type="text/css">
     .selectedItem{border: 2px dashed #c0ffee;}
 </style>
...
<ul class='listContainer'>
     <li> ... </li>
     <li> ... </li>
     <li> ... </li>
</ul>
...
<script type="text/javascript">
     Y.one('.listContainer').delegate(
         'click', 
         function(e){ e.currentTarget.toggleClass('selectedItem');}, 
         'li'
     );
</script>

4
不行。焦点的整个重点在于选择一个元素(就像为其“聚光灯”)。但是,如果您想要双重书写文本框,则可以使用此方法。
<input type="text" name="firstbox" onchange="firstbox.value = secondbox.value; return true;">
<input type="text" name="secondbox">

2

我不这么认为。如果两个文本字段同时拥有焦点,哪一个会接收输入?你可以“模拟”这种情况(一个字段拥有焦点并且代码“复制”值),但是一次只能有一个项目成为“焦点”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接