javascript - 如何在 JavaScript 中找出元素的 lang 属性的计算值?

标签 javascript jquery html

有时我需要找出 HTML lang 的计算值属性(元素的语言)。我正在使用 jQuery。例如,在下面的代码中,我想知道 <p> 的计算语言元素,我希望值 he :

<!DOCTYPE html>
<html lang="en" dir="ltr">
    <head>
        <meta charset="utf-8" />
        <title>lang test</title>
    </head>
    <body>
        <div lang="ar">
            <div lang="he">
                <p>Hallo.</p>
            </div>
        </div>
    </body>
</html>

正在做 $( 'p' ).attr( 'lang' )什么都不返回,可能是因为 <p>元素没有自己的 lang 属性。

这段代码似乎做了正确的事情:

 $( 'p' ).closest( '[lang]' ).attr( 'lang' )

这在功能上是否正确?在 jQuery、纯 JavaScript 或其他 JavaScript 库中有更好的方法吗?

谢谢。

最佳答案

最简单的方法是写一个递归函数:

function getLanguage(node) {
  if(node.lang) {
    return node.lang;
  } else if(node.parentNode) {
    return getLanguage(node.parentNode);
  } else {
    return undefined;
  }
}

递归有时可能效率低下,但在这里它可能无关紧要。

如果您非常频繁地需要文档中各种元素的信息,效率可能是相关的,然后您可以遍历整个文档树并添加一个新属性,指示每个节点的“计算语言”。

关于javascript - 如何在 JavaScript 中找出元素的 lang 属性的计算值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498481/

相关文章:

javascript - 将中心 div 保留在其他 div 中

javascript - 脚本的名称是什么?

javascript - jQuery datepicker future 一天的值

html - Material sidenav导致翻译和flex CSS属性出现问题

javascript - 如何从javascript或jquery中的时间字符串中获取分钟数

javascript - 搜索字段为空时隐藏结果 div - Ajax Live Search

javascript - 为什么 OOP 中需要工厂函数?

javascript - 使用 JQuery 获取 SELECT 的选定选项文本

html - 同时针对智能手机纵向和横向的媒体查询

iphone - 如何在 Safari 中更改 iPhone 虚拟键盘上 "Go"按钮的文本?