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