JavaScript无法将焦点设置为ul中的第一个li元素

时间:2015-05-13 11:34:16

标签: javascript html

我的代码如下:

<ul id='someId'>
 <li class='someClass'>
 </li>
</ul>

我希望根据某些条件将重点放在ul中的第一个li元素上。

我的第一次尝试是这样的:

var ul = document.getElementById('someId');           
var child = ul.childNodes[0];
child.focus();

我的第二次尝试是这样的:

var y = document.getElementsByClassName('someClass');
var aNode = y[0];
aNode.focus();

但以上都不是

有什么想法吗?

2 个答案:

答案 0 :(得分:21)

问题是你无法在不设置tabIndex的情况下聚焦非输入元素。

<li tabIndex="-1">...</li>

你可以试试这个小提琴:jsfiddle

答案 1 :(得分:0)

'li'不能有焦点,但是'输入'可以,所以你自己编写以下脚本:

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)。