Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用浏览器的访问键在具有访问键的所有链接的第一个字符下面划线_Javascript_Css_Xhtml_Key - Fatal编程技术网

Javascript 使用浏览器的访问键在具有访问键的所有链接的第一个字符下面划线

Javascript 使用浏览器的访问键在具有访问键的所有链接的第一个字符下面划线,javascript,css,xhtml,key,Javascript,Css,Xhtml,Key,我试图弄清楚如何使用dom访问每个带有访问键的链接的访问键,并在按下访问键时在页面上所有链接的第一个字符下面划线 i、 e。 当用户在IE和Chrome中按下alt键时,链接的所有前几个字母都会加下划线,让用户知道要按哪个键。还可以通过为所有使用javascript的浏览器创建一个通用的[access key]来实现吗?或者,您是否被迫为每个浏览器使用多个方法,从而无法为每个浏览器编写一个类 我发现了一种在字符周围使用的方法,但这似乎不是一种好的做法,如果dom只抓取访问键,在链接中的字母下面加

我试图弄清楚如何使用dom访问每个带有访问键的链接的访问键,并在按下访问键时在页面上所有链接的第一个字符下面划线

i、 e。 当用户在IE和Chrome中按下alt键时,链接的所有前几个字母都会加下划线,让用户知道要按哪个键。还可以通过为所有使用javascript的浏览器创建一个通用的[access key]来实现吗?或者,您是否被迫为每个浏览器使用多个方法,从而无法为每个浏览器编写一个类

我发现了一种在字符周围使用
的方法,但这似乎不是一种好的做法,如果dom只抓取访问键,在链接中的字母下面加下划线,然后用下划线对其进行修改,那就太好了

非常感谢您的帮助

var labels= document.getElementsByTagName('label');
for (var i= labels.length; i-->0;) {
    var label= labels[i];
    if (!label.htmlFor) continue;
    var field= document.getElementById(label.htmlFor);
    if (!field) continue;
    if (!field.accessKey) continue;
    var ix= label.firstChild.data.toLowerCase().indexOf(field.accessKey.toLowerCase());
    if (ix===-1) continue;
    var next= label.firstChild.splitText(ix+1);
    var span= document.createElement('span');
    span.className= 'accesshighlight';
    span.appendChild(label.firstChild.splitText(ix));
    label.insertBefore(span, next);
}
假设标签包含文本内容而不是更多元素(如果需要在子元素中查找匹配的文本,则需要花费更多的时间),这将在标签中的第一个匹配字母周围环绕一个
。然后你可以说:

body.showhighlights .accesshighlight {
    text-decoration: underline;
}

并在按下alt键时切换
class=“showhighlights”
document.body
上的显示。

此解决方案不适用于
's@PauloRoberto:很遗憾,无法将标记添加到
,因为标签是属性值而不是文本内容。最好是添加一个U+0332组合的低端字符,但渲染效果通常很差。最好改为使用允许标记的