JavaScript kullanarak özellik ekleyecek / güncelleyecek bir yol bulmaya çalışıyorum. Bunu setAttribute()
işlevle yapabileceğimi biliyorum ama bu IE'de çalışmıyor.
JavaScript kullanarak özellik ekleyecek / güncelleyecek bir yol bulmaya çalışıyorum. Bunu setAttribute()
işlevle yapabileceğimi biliyorum ama bu IE'de çalışmıyor.
Yanıtlar:
Burada , IE de dahil olmak üzere birçok farklı tarayıcıdaki özniteliklerin davranışını okuyabilirsiniz .
element.setAttribute()
IE'de bile hile yapmalı. Onu denedin mi? Eğer işe yaramazsa, o zaman belki
element.attributeName = 'value'
işe yarayabilir.
document.getElementById("nav").setAttribute("class", "active");
Chrome JS konsolunda çalışıyor, ancak gerçek sayfada çalışmıyor ... herhangi bir fikir? Bu arada, gerçek sayfaya kapsamın .js
sonundan önce dosyayı body
ekliyorum.
Tamamen uyumlu olmak istiyorsanız, kolay görünen şey aslında aldatıcıdır.
var e = document.createElement('div');
Eklemek için bir 'div1' kimliğiniz olduğunu varsayalım.
e['id'] = 'div1';
e.id = 'div1';
e.attributes['id'] = 'div1';
e.createAttribute('id','div1')
Bunların tümü, IE 5.5'teki sonuncusu dışında çalışacaktır (bu noktada eski tarih, ancak hala güncelleme olmadan XP'nin varsayılanıdır).
Ama tabii ki beklenmedik durumlar var. 8'den önce IE'de çalışmaz: e.attributes['style']
Hata olmaz ama sınıfı gerçekten ayarlamaz, className: olmalıdır e['class']
.
Ancak, öznitelikleri kullanıyorsanız, bu ÇALIŞACAKTIR:e.attributes['class']
Özetle, nitelikleri gerçek ve nesne odaklı olarak düşünün.
Kelimenin tam anlamıyla, sadece x = 'y'yi tükürmesini ve bunun hakkında düşünmemesini istersiniz. Bu, setAttribute, createAttribute özniteliklerinin (IE'nin stil istisnası hariç) olduğu şeydir. Ancak bunlar gerçekten nesneler olduğu için işler karışabilir.
JQuery innerHTML slop yerine düzgün bir DOM öğesi oluşturma zahmetine gireceğiniz için, onu bir öğe olarak ele alacağım ve e.className = 'fooClass' ve e.id = 'fooID' ile devam edeceğim. Bu bir tasarım tercihidir, ancak bu durumda, bir nesnenin size karşı çalıştığı gibi davranmaya çalışmaktır.
Diğer yöntemlerde olduğu gibi size asla geri tepmez, sadece sınıfın className ve stilin bir nesne olduğunun farkında olun, böylece style.width, style = "width: 50px" değil. Ayrıca tagName'i de hatırlayın, ancak bu zaten createElement tarafından ayarlandı, bu yüzden endişelenmenize gerek yok.
Bu istediğimden daha uzundu, ancak JS'deki CSS manipülasyonu zor bir iş.
id
değil gibi başka bir şeyle,data-toggle
Zorunlu jQuery çözümü . title
Özniteliği bulur ve ayarlar foo
. Bunu id ile yaptığım için bunun tek bir öğe seçtiğine dikkat edin, ancak aynı özniteliği bir koleksiyonda seçiciyi değiştirerek kolayca ayarlayabilirsiniz.
$('#element').attr( 'title', 'foo' );
Öznitelikle ne yapmak istiyorsunuz? Bir html niteliği mi yoksa size ait bir şey mi?
Çoğu zaman bunu bir özellik olarak ele alabilirsiniz: bir öğeye bir başlık mı ayarlamak istiyorsunuz? element.title = "foo"
yapacağım.
Kendi özel JS öznitelikleriniz için DOM doğal olarak genişletilebilirdir (aka expando = true), bunun basit sonucu, element.myCustomFlag = foo
bunu sorunsuz bir şekilde yapıp daha sonra okuyabilmenizdir.