繁体   English   中英

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

[英]How to find out the computed value of an element's lang attribute in JavaScript?

我有时需要找出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;
  }
}

递归有时可能效率低下,但在这里它可能并不重要。

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

这个jQuery插件应该可以完成这项工作。 它只考虑jQuery对象中的第一个元素。

(function($) {
    $.fn.lang = function() {
         if (this.length) {
             var node = this[0];
             while (node) {
                 if (node.lang) {
                     return node.lang;
                 }
                 node = node.parentNode;
             }
         }
    };
})(jQuery)

如果没有找到lang属性,它将返回undefined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM