2009-07-02 15 views
5

Belg.getElementById ('myId') belgesini bildiğim kadarıyla, yalnızca belgede bulunan HTML öğelerini arayacaktır. JS aracılığıyla yeni bir öğe oluşturduğumu ancak belgenin gövdesine henüz eklemediğimi varsayalım, normalde getElementById ile yaptığım gibi bu öğeye kimliğimle erişebilmemin bir yolu var mı?DOM'da [henüz] olmayan öğeler için getElementById'yi kullanın?

var newElement = document.createElement('div'); 
newElement.id = 'myId'; 
// Without doing: document.body.appendChild(newElement); 
var elmt = document.getElementById('myId'); // won't work 

Bunun için bir çözüm var mı? (Bu özel öğeye herhangi bir başvuruda bulunmak istemediğimi belirtmeliyim, bu yüzden onun kimliği aracılığıyla erişmem gerekir)

Teşekkür ederiz!

+0

Bunu oluşturduysanız, nesneyi başka işlevlere geçirmeniz ve doğrudan buna erişmeniz yeterlidir? –

+0

@s_hewitt: Bu OP için geçerli değil, ama eğer benden hoşlanıyorsanız, "sadece iletin" diyemezsiniz, çünkü referansa sahip değilsiniz. (Bunu innerHTML veya bazı kitaplığın eşdeğerini kullanarak oluşturdunuz.) Bu durumda, bir başvuru almaya çalışıyorsunuz, ancak getElementById hatalı bir nesne üzerinde elverişsiz bir konumda bulunuyor. – Thanatos

cevap

5

Belgenin bir parçası değilse, document.getElementById'u kullanarak yakalayamazsınız. getElementById bir DOM araması yapar, bu nedenle öğenin bulunacak ağaçta olması gerekir. Kayan bir DOM öğesi oluşturursanız, yalnızca bellekte bulunur ve DOM'dan erişilemez. Görünür olmak için DOM'a eklenmelidir.

Öğeye daha sonra başvurmanız gerekiyorsa, başvuruyu başka bir işleve iletmeniz yeterlidir; JavaScript'teki tüm nesneler referans olarak iletilir; bu nedenle, bu yüzen DOM öğesi üzerinde başka bir işlevden çalışmak, kopyayı değil orijinali değiştirir.

+0

Tamam, her şey yolunda! Ben bir document.createElement ('div') yaparak, elemanım bir şekilde bir liste veya ağacında, tüm eklenmiş öğeleri ile başvurulan olsa da ... Bu yüzden durum böyle değil ve kimlikleri olmadan bunu yapın. –

0

getElementById, belge nesnesinde bir yöntemdir. Belgedeki hiçbir şeyi iade etmeyecek.

Referans kaydetme konusunda, ha? Eğer sihirli bir şekilde havayı hava ile çekebilirseniz, o zaman hava ona bir referans olur.

0

Bunu oluşturduysanız, nesneyi başka işlevlere geçirmeniz ve doğrudan ona erişmeniz yeterlidir?

İlgili konular