属性nodeName of elements自动变为lowerCase

时间:2015-03-18 09:52:29

标签: javascript html

为什么element的attributes属性中的任何nodeName属性变为小写,以及如何使它成为camelCase?

我有以下代码:

<div myAttr = "true"></div>
<script>
var div = document.getElementsByTagName('div')[0];
var attr = div.attributes[0];
console.log(attr.nodeName);
</script>

这会显示myattr,但是标记是myAttr,为什么?以及如何解决它?

2 个答案:

答案 0 :(得分:1)

所有代码必须为小写:这适用于HTML元素名称,属性,属性值(除非是text / CDATA),CSS选择器,属性和属性值(字符串除外)。

请参阅此链接: https://google.github.io/styleguide/htmlcssguide.html#Capitalization

答案 1 :(得分:0)

来自HTML spec

  

[...]在HTML语法中,属性名称,甚至是外来名称   元素,可以用任何混合的小写和大写字母书写   这是属性名称的ASCII不区分大小写匹配。

如果您按照链接并向上滚动一点,也会有类似的标签名称部分。

所以,会发生什么是HTML解析器不关心您用于属性名称的案例组合。我找不到某个地方确切地说自定义属性必须通过DOM(this is the most relevant bit)标准化为小写,但由于匹配的必须不区分大小写,为什么不呢。请注意,如果您在混合大小写中尝试此操作:

div.getAttribute('myAttr')

它将返回预期值,即使内部属性名称为'myattr'。然后,这将做同样的事情:

div.getAttribute('MYattR')