Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript无法将焦点设置为ul中的第一个li元素_Javascript_Html - Fatal编程技术网

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);
    }