为什么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,为什么?以及如何解决它?
答案 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')