提问者:小点点

如何设置默认按钮组子元素的焦点(页面加载后)


我尝试在单击单独的'switch'元素(使按钮组可见)时将其中一个按钮设置为focusactive。 这是在页面加载之后很长时间的事情,因此自动聚焦将不起作用。

我好像不能让它工作。 也许button元素的焦点不能通过DOM选择器触发。

我尝试对元素调用focus(),但似乎没有用。 我可以循环和做每个元素的样式,但它只是似乎有一个更好的方式。

请有人能提出一个办法来做这件事吗? 在这个阶段,我更喜欢DOM选择器,因为我试图在继续使用jquery或其他技术之前更熟悉它。

下面是html和CSS代码:

<style>
.btn-group button {
  background-color: #b9b9b9; /* Green background, orange: #ffb748 */
  border: 1px solid grey; /* Green border, orange: #ffa00c */
  color: white; /* White text */
  padding: 10px 24px; /* Some padding */
  cursor: pointer; /* Pointer/hand icon */
  width: 50%; /* Set a width if needed */
  display: block; /* Make the buttons appear below each other */
  margin-left: auto;
  margin-right: auto;
}

.btn-group button:not(:last-child) {
  border-bottom: none; /* Prevent double borders */
}

/* Add a background color on hover, focus & reset on blur */
.btn-group button:hover {
  background-color: grey;
}
.btn-group button:focus {
  background-color: grey;
}
.btn-group button:blur {
  background-color: #b9b9b9 /*#4CAF50*/;
}

</style>


<div style="width: 50%">
    <div class="btn-group">
      <button id="one">Apple</button>
      <button id="two">Samsung</button>
      <button id="three">Sony</button>
    </div>
</div>

并从浏览器控制台中:

document.querySelector('#one').focus();

共1个答案

匿名用户

.focus()应该可以正常工作,请参见下面的片段。

你确定你是从正确的地方打给JS的吗? 查询是否确实找到了一个元素? 您可以在调用focus查看查询结果之前console.log

null

setTimeout(() => document.querySelector('#one').focus(), 1000);
setTimeout(() => document.querySelector('#two').focus(), 2000);
setTimeout(() => document.querySelector('#three').focus(), 3000);
setTimeout(() => document.querySelector('#one').focus(), 4000);
setTimeout(() => document.querySelector('#two').focus(), 5000);
setTimeout(() => document.querySelector('#three').focus(), 6000);
.btn-group button {
  background-color: #b9b9b9;
  border: 1px solid grey;
  color: white;
  padding: 10px 24px;
  cursor: pointer;
  display: block;
  width: 50%;
}

.btn-group button:hover {
  background-color: grey;
}

.btn-group button:focus {
  background-color: grey;
}

.btn-group button:blur {
  background-color: #b9b9b9;
}
<div style="width: 50%">
  <div class="btn-group">
    <button id="one">Apple</button>
    <button id="two">Samsung</button>
    <button id="three">Sony</button>
  </div>
</div>