我很困惑「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我認爲這可以是一個很好的答案。 –
我會讓你或其他人深入瞭解一切的複雜性併發布答案。我這的工作都幹完了... –