JavaScript无法将焦点设置为ul中的第一个li元素
我有以下代码:JavaScript无法将焦点设置为ul中的第一个li元素,javascript,html,Javascript,Html,我有以下代码: <ul id='someId'> <li class='someClass'> </li> </ul> 我的第二次尝试是这样的: var y = document.getElementsByClassName('someClass'); var aNode = y[0]; aNode.focus(); 但上述措施都不起作用 有什么想法吗?问题是,如果不设置tabIndex,就无法聚焦非输入元素 <li tabIndex
<ul id='someId'>
<li class='someClass'>
</li>
</ul>
我的第二次尝试是这样的:
var y = document.getElementsByClassName('someClass');
var aNode = y[0];
aNode.focus();
但上述措施都不起作用
有什么想法吗?问题是,如果不设置tabIndex,就无法聚焦非输入元素
<li tabIndex="-1">...</li>
你可以试试这把小提琴:一个“li”不能有焦点,但是一个“input”可以,所以你自己写下面的脚本:
function installLI(obj){
var ul = document.createElement('ul');
obj.appendChild(ul);
var li = document.createElement('li');
var txt = document.createElement('input');
li.appendChild(txt);
ul.appendChild(li);
txt.focus();
li.removeChild(txt);
}
其中“obj”是要将列表附加到的对象(如可编辑的div)。请显示HTML好吗?如果可以聚焦,则HTMLElement.focus()方法将聚焦设置在指定的元素上。它是可聚焦的吗?你怎么知道它没有聚焦?我使用document.activeElement在聚焦后检查哪个是活动元素回答:“但是
tabindex=-1
意味着根据规范不可聚焦。此外,即使你将其固定为tabindex=0
,你也无法从视觉上看出焦点在某些浏览器中,因此你需要设置它的样式。”(声誉不足,无法发表评论)
function installLI(obj){
var ul = document.createElement('ul');
obj.appendChild(ul);
var li = document.createElement('li');
var txt = document.createElement('input');
li.appendChild(txt);
ul.appendChild(li);
txt.focus();
li.removeChild(txt);
}