Javascript 为什么focus()不选择我的容器div?
我有一个index.html,其中包含JavaScript:Javascript 为什么focus()不选择我的容器div?,javascript,html,forms,Javascript,Html,Forms,我有一个index.html,其中包含JavaScript: byId("p").value = page; byId("nav_container").focus(); document.forms["nav_form_main"].submit(); 焦点部分在这里不起作用 我希望浏览器将焦点放在页面的某个特定部分,几乎放在顶部 我已经试着将焦点放在提交之后,同样的问题也出现了。确保要聚焦的元素具有属性tabindex=-1,否则该元素不可聚焦 比如说 <div id="myfocu
byId("p").value = page;
byId("nav_container").focus();
document.forms["nav_form_main"].submit();
焦点部分在这里不起作用
我希望浏览器将焦点放在页面的某个特定部分,几乎放在顶部
我已经试着将焦点放在提交之后,同样的问题也出现了。确保要聚焦的元素具有属性tabindex=-1,否则该元素不可聚焦 比如说
<div id="myfocusablediv" tabindex="-1"></div>
当为元素设置tabindex=-1时,它允许元素通过javascript获得焦点。相反,如果您希望它通过在元素之间进行tab来获得焦点,那么您可以将tabindex属性设置为0。一旦提交表单,任何焦点都将变得无关紧要。文档会将位置更改为表单的操作,但焦点仍会丢失 看起来您希望在提交后设置焦点,在本例中,请在onload事件中执行此操作:
window.onload = function WindowLoad(evt) {
byId("nav_container").focus();
}
正如其他人提到的,如果nav_容器不是输入框,它也不会工作,要滚动到该位置,请使用命名锚。。在元素之前添加此类锚点:
<a name="nav_container_anchor" />
当我想强制某个表单元素具有焦点时,我会这样做:
函数setFocusFixed elm{
如果!输入返回;
var savedTabIndex=elm.getAttribute'tabindex'
elm.setAttribute'tabindex','-1'
埃尔姆·福克斯
elm.setAttribute'tabindex',savedTabIndex
}
//演示:
var buttons=document.queryselectoral'button',
输入=文档。查询选择器“输入”;
按钮[0]。addEventListener'click',=>input.focus
按钮[1]。addEventListener'click',=>setFocusFixedinput
将焦点放在输入上
将焦点设置在输入上-固定您需要一个属性tabindex=0才能使焦点对我有效:tabindex=-1从页面选项卡序列中删除元素,例如,它不再可用于键盘
-1在某些情况下仍然可以聚焦,但不能通过键盘tab键聚焦,
0以自动顺序聚焦
任何其他正数定义聚焦元素的顺序
也许你已经打开了开发工具。我刚刚遇到这个问题,当我关闭devtools时,一切正常。我假设byId是document.getElementById的快捷方式函数?tabindex部分很好,但它不必是-1,它可以是对特定页面有意义的任何值。对于我的情况,没有任何变化。我也无法从控制台命令中获得焦点,不知道为什么纯javascript和jquery都使用了。是的,我同意,我也提出了同样的问题。如果devoper工具处于打开状态,则domeElement.focu可能无法工作
document.location = "#nav_container_anchor";