getAttributealır niteliği iken bir DOM öğesinin el.idverilerini geri çağırır özelliğini bu DOM öğesinin. Aynı değiller.
DOM özellikleri çoğu zaman özniteliklerle senkronize edilir.
Ancak senkronizasyon aynı değeri garanti etmez . Klasik bir örnek, bir çapa elemanı arasında el.hrefve el.getAttribute('href')içindir.
Örneğin:
<a href="/" id="hey"></a>
<script>
var a = document.getElementById('hey')
a.getAttribute('href')
a.href
</script>
Bu davranış, W3C'ye göre href özelliğinin iyi biçimlendirilmiş bir bağlantı olması gerektiğinden oluşur. Çoğu tarayıcı bu standarda uymaktadır (tahmin edin kim uymaz?).
input'In checkedmülkü için başka bir dava var . DOM özelliği trueveya falseözelliği dizeyi "checked"veya boş bir dizeyi döndürürken döndürür .
Ve sonra, yalnızca tek yönlü senkronize edilen bazı özellikler var . En iyi örnek, valuebir inputelemanın özelliğidir . Değerinin DOM özelliği aracılığıyla değiştirilmesi, niteliği değiştirmez (düzenleme: daha fazla kesinlik için ilk yorumu kontrol edin).
Bu nedenlerden dolayı, tarayıcılar arasında davranışları farklılık gösterdiğinden, özellikleri değil, DOM özelliklerini kullanmaya devam etmenizi öneririm .
Gerçekte, özellikleri kullanmanız gereken yalnızca iki durum vardır:
- Özel bir HTML özelliği, çünkü bir DOM mülküyle senkronize edilmedi.
- Mülkten senkronize edilmeyen yerleşik bir HTML özniteliğine erişmek için, özniteliğe (örneğin,
valuebir inputöğenin orijinali ) ihtiyacınız olduğundan eminiz .
Daha detaylı bir açıklama istiyorsanız bu sayfayı okumanızı şiddetle tavsiye ederim . Sadece birkaç dakikanızı alacak, ancak bilgilerden (burada özetlediğim) memnun kalacaksınız.