我可以在JavaScript中动态设置tabindex吗?
是否有选项卡索引之类的属性我可以在JavaScript中动态设置tabindex吗?,javascript,html,accessibility,Javascript,Html,Accessibility,是否有选项卡索引之类的属性 上下文:我正在使web表单中的某个节可见或不可见,这取决于我希望在该节可见时手动设置选项卡索引的某些条件。动态创建并重置HTML元素的选项卡索引 document.getElementById("link3").tabIndex = 6; tabindex属性指定HTML元素的选项卡顺序,例如“li”、“a”e.t.c的集合。所有主要浏览器都支持tabindex属性 对于这个实例,让我们为列表项“li”设置tabindex。通常tabindex将从“0”开始,但是我
上下文:我正在使web表单中的某个节可见或不可见,这取决于我希望在该节可见时手动设置选项卡索引的某些条件。动态创建并重置HTML元素的选项卡索引
document.getElementById("link3").tabIndex = 6;
tabindex属性指定HTML元素的选项卡顺序,例如“li”、“a”e.t.c的集合。所有主要浏览器都支持tabindex属性
对于这个实例,让我们为列表项“li”设置tabindex。通常tabindex将从“0”开始,但是我们可以将其重置为从“1”开始。我正在使用Jquery来实现这一点
- 苹果
- 火龙果
- 丹森
- 云莓
- 蓝莓
- 樱桃
- 黑醋栗
- 椰子
- 鳄梨
- 皮纳普尔
$(文档).ready(函数(){
变量
somefruits list=$(“ul#dfruits li”),
//将选项卡索引设置为从1开始
tabindex=0;
SomeFruitsList.each(function()){
//向每个列表项添加选项卡索引号
tabindex++;
$(this.attr(“tabindex”,“tabindex”+tabindex);
var tabIndex=$(this.attr(“tabIndex”);
//将选项卡索引号作为标题添加到每个列表项中
$(this.attr(“title”,tabIndex);
$(this).append(“
我的tabIndex是number:”+tabIndex+“”)
})
});
使用JQuery
我们可以轻松地动态设置选项卡索引
尝试此代码-设置选项卡index
并增加变量
$(function() {
var tabindex = 1;
$('input,select').each(function() {
if (this.type != "hidden") {
var $input = $(this);
$input.attr("tabindex", tabindex);
tabindex++;
}
});
});
为readonly
输入动态设置tabindex=“-1”
这是一个有趣的问题;越是那样
以下是如何将所有只读输入元素的选项卡索引设置为-1
:
NodeList.prototype.forEach = NodeList.prototype.forEach || Array.prototype.forEach;
document.querySelectorAll('input[readonly="readonly"]').forEach(x => x.tabIndex = -1);
第一行确保使用forEach
方法扩展NodeList
类。这是一些有用的JS:
for(让document.queryselectoral('[tabindex]')的选项卡化){
}
setAttribute('tabindex','-1');
$('link3').attr('tabIndex',6);//对于jquery,属性是tabindex
,但el.tabindex
不起作用,而el.tabindex
起作用。太奇怪了。@BillCriswell正如您可能知道的,HTML属性是小写的,通常可以有-
破折号。javascript属性是不同的-驼峰大小写。棘手的是dom元素通常同时具有html属性和javascript属性。html属性将镜像javascript属性。与在html中使用class
相同,但在JavaScription中使用className
,这是2020年的一个可行选择<代码>文档.getElementById(“link3”).setAttribute(“tabindex”,“6”)
对于偶然发现此答案的任何人来说,这不是一个好的实践,在给出的示例(输入)中应该避免。屏幕阅读器用户应该能够访问与非屏幕阅读器用户相同的所有信息。通过在元素上设置tabindex=“-1”
,该元素将从页面上的可聚焦项目列表中删除,并对屏幕阅读器有效隐藏tabindex=“-1”
应仅用于最初不可聚焦的项目,以允许它们通过编程方式接收聚焦。请看下面。@GrahamRitchie如果你引用,请完整引用。以下是适用于我的特定用例的上一段:“在使用箭头键或其他快捷键的复杂小部件和菜单中,-1
的值也可能有用。这确保了小部件中只有一个元素可以通过选项卡
键导航,同时仍然允许在小部件中的其他组件上设置焦点。”
NodeList.prototype.forEach = NodeList.prototype.forEach || Array.prototype.forEach;
document.querySelectorAll('input[readonly="readonly"]').forEach(x => x.tabIndex = -1);