我请你帮助我,我完全被这个问题困住了。
我想让我的代码可以通过键盘导航并适用于屏幕阅读器设备。但我有几个问题。
这是我在 JS 中的代码:
function changeText()
{
document.getElementById('div1').innerHTML = '<input id="btn2" type="button" onclick="changeText2()" value="Change Text2" />';
document.getElementById('btn1').setAttribute("aria-hidden",true);
document.getElementById('div1').focus();
}
function changeText2()
{
document.getElementById('div1').innerHTML = '<input id="btn3" type="button" onclick="changeText()" value="Change Text" />';
document.getElementById('btn1').setAttribute("aria-hidden",true);
}
和 HTML:
<div id="div1">
<input id="btn1" type='button' onclick='changeText()' value='Change Text'/>
</div>
当我仅使用键盘(带有选项卡)导航到btn1
窗口然后按回车键(或空格)时,按钮已更改,但它失去了焦点。如您所见,我尝试将其集中在 JS 上,但没有结果。我也尝试使用tabindex
标签,但也没有帮助。我希望它在被按下时能够聚焦,这样屏幕阅读器更容易导航和访问。
请帮忙!
编辑
焦点已经用 James Long 解决方案在按钮上进行了测试,并且可以正常工作!
但是,btn.setAttribute('aria-hidden', true);
应该删除。
最终编辑
我刚收到,呵呵!为了让我的例子正常工作,我应该专注于btn2
而不是btn1
. 这太愚蠢了!所以,它是这样的:
function changeText()
{
document.getElementById('div1').innerHTML = '<input id="btn2" type="button" onclick="changeText2()" value="Change Text2" />';
document.getElementById('btn2').focus();
}
function changeText2()
{
document.getElementById('div1').innerHTML = '<input id="btn1" type="button" onclick="changeText()" value="Change Text" />';
document.getElementById('btn1').focus();
}
我为自己感到骄傲:)