我很困惑“HTML属性”和“DOM元素的属性”之间的差异。从this post,我了解到getAttribute("class")
返回前者,而element.className
返回后者。不过,我便无法理解下列代码的输出:“HTML属性”与“DOM元素的属性”
var span = document.querySelector("#span");
console.log(span.className + ' ' + span.getAttribute("class"));
span.className = "bar";
console.log(span.className + ' ' + span.getAttribute("class"));
<span id="span" class="foo"><span>
我希望得到的结果是
foo foo
bar foo
,因为在我的理解我的HTML文件的内容在运行javascript时没有改变。此外,当我用span.setAttribute('class', 'bar');
替换span.className = "bar";
行时,仍然会有相同的结果。
我的问题是:“HTML属性”和“DOM元素的属性”之间的区别和关系是什么?
HTML属性是你在标记写什么。这些属性就像其他所有东西一样成为DOM的一部分。其中一些属性在创建时直接映射到DOM元素上。其中,它们的一个子集维护着属性和属性之间的实时映射,所以两者在更改时都会更新。 'class'属性就是其中之一。 –
@squint我认为这可以是一个很好的答案。 –
我会让你或其他人深入了解一切的复杂性并发布答案。我这的工作都干完了... –