如何找出JavaScript中元素's lang属性的计算值
How to find out the computed value of an element's lang attribute in JavaScript?
我有时需要找出HTML lang
属性(元素的语言)的计算值。我使用jQuery。例如,在下面的代码中,我想知道<p>
元素的计算lang,并且我期望值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
。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- JavaScript Pub/Sub属性访问问题
- 动态更改语言时,应更新HTML lang属性
- 获取 HTML 元素的隐式 lang 属性
- Html lang 属性没有出现在页面源代码中
- 如何在JavaScript中创建具有lang属性的HTML元素
- 如何在javascript中检查lang属性支持
- 如何找出JavaScript中元素's lang属性的计算值
- i18next和HTML的lang属性的差异