2016-04-07 19 views
6

, bu iki satırı çalıştırın: Neden farklıNeden bir girişin değeri setAttribute veya doğrudan ayarlanması arasındaki fark nedir? DevTools'un olarak

1.

window.x = document.createElement("input"); 
x.type="text"; 
x.name="nm"; 
x.value="val"; 
x 
// <input type="text" name="nm"> 

2.

window.x = document.createElement("input"); 
x.type="text"; 
x.name="nm"; 
x.setAttribute("value", "val"); 
x 
// <input type="text" name="nm" value="val"> 

baskılı olsun ki? Değer, her iki durumda da uygun şekilde ayarlanmış gibi görünüyor. Özellik ve DOM özelliği arasında bir bağlantı kesilmiş gibi görünüyor. Ayrıca, .value numaralı mülkün alıcısı da .getAttribute('value') sonucundan farklı olur.

Tüm gün setAttribute() yapabilirim, ancak .value eski değeri döndürür.

+0

(ayar değeri doğrudan değer özelliğini kullanarak). Değer özniteliği, yükteki değeri (tam durdurma) ayarlar. Genelde sadece 'değer' istersiniz. Bu, girdinin gerçek değeridir. Yine de bu işarete yansıtılmayacak. – Liam

+1

Özelliklerin ve DOM özelliklerinin birçoğu birlikte eşlenir, "değer" özniteliği/özelliği [daha uzun] [https://www.w3.org/TR/html5/forms.html#value-sanitization- Algoritma) Gördüğüm ilişki özelliklerini haritalama ... –

cevap

2

Her iki yaklaşım arasındaki temel fark, temeldeki defaultValue özelliğinin ayarlanmasıdır. setAttribute kullandığınızda, defaultValue özelliğinin yanı sıra value özelliği güncelleştirilecek/ayarlanacaktır. .value kullanılarak yalnızca value özelliğini günceller/ayarlar.

Davranış 1: (setAttribute kullanarak ayar değeri)

x.setAttribute("value","test"); 
x.defaultValue; //"test" 
x.value; //"test" 

Davranış 2: değer ve değer nitelik farklı şeylerdir Çünkü

x.value = "test"; 
x.defaultValue; //"" 
x.value; //"test" 
+0

Bunun için herhangi bir belgeleriniz var mı? – Lewis

+0

@Tresdin Okudum ve biliyordum. Bunun için bana bir alıntı yapalım. –

+1

@Tresdin Burada defaultValue tanımını okuyun. _ Öğenin type niteliği "text", "file" veya "password" değerine sahip olduğunda, bu, öğenin HTML değer niteliğini gösterir. İlgili öznitelik denetiminin içeriği, bir etkileşimli kullanıcı aracısı içinde değiştiğinde, bu özniteliğin değeri değişmez. Https://www.w3.org/TR/DOM-Level-2-HTML/html.html# ID-6043025 –