getAttribute
alır niteliği iken bir DOM öğesinin el.id
verilerini 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.href
ve 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 checked
mülkü için başka bir dava var . DOM özelliği true
veya 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, value
bir input
elemanı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,
value
bir 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.