设置';自动对焦&x27;JavaScript不起作用的属性
我正在编写一个小插件,该插件将封装自动聚焦设置,但当我使用JavaScript动态添加属性时,它不会自动聚焦页面,这很奇怪。这有什么关系吗 HTML: 不这样做:设置';自动对焦&x27;JavaScript不起作用的属性,javascript,html,Javascript,Html,我正在编写一个小插件,该插件将封装自动聚焦设置,但当我使用JavaScript动态添加属性时,它不会自动聚焦页面,这很奇怪。这有什么关系吗 HTML: 不这样做: document.querySelector('input').setAttribute('autofocus', 'autofocus').focus(); jsiddle:试试这样的方法 document.querySelector('input').focus() <input type="text" autofocu
document.querySelector('input').setAttribute('autofocus', 'autofocus').focus();
jsiddle:试试这样的方法
document.querySelector('input').focus()
<input type="text" autofocus>
编辑
如果你想要HTML5标准,你应该让HTML看起来像这样
document.querySelector('input').focus()
<input type="text" autofocus>
尝试在输入元素之后立即添加javascript代码,以便在页面加载完成之前执行。在您的情况下,
autofocus
属性设置为元素,但通过浏览器对具有autofocus
的元素进行聚焦已经完成。因此,您可以在浏览器设置焦点后设置值。当浏览器试图设置它时,不存在任何属性。试试下面的代码
<input type="text">
<script>
document.querySelector('input').setAttribute('autofocus', 'autofocus');
</script>
document.querySelector('input').setAttribute('autofocus','autofocus');
如果您需要在单击按钮或其他操作时执行此操作,则需要在JavaScript中执行此操作。设置属性并不意味着浏览器将随时执行它。最好的方法似乎是:
document.querySelector('input').autofocus = true;
这篇文章可能有助于解释为什么要使用反射属性:
但是,似乎需要在文档加载附近应用它。否则它似乎不会开火。我想这是因为这里()定义了页面一加载就可以工作。我还没有看到任何其他的东西说它可以在以后调用。每次我试着稍后用3秒的setTimeout启动它时,它都不会聚焦字段。为什么不呢。focus()?因为这不是HTML5,而是使用JavaScript来模拟它。存在设置属性的问题,即在HTML呈现时将其本机设置在那里。