Merhaba

9 views
Skip to first unread message

Jackson

unread,
Jul 25, 2009, 5:28:33 AM7/25/09
to ajaxnedir
aşağıdaki şekilde bir sınıfım var bu sınıfı html içerisinde
document.body.appendChild(new divClass()); şeklinde ekliyorum fakat
buton click olayında div2 ekrana yansımıyor ancak "click" event'ında
div2'yi div içerisine ekledikten sonra div'i tekrar
document.body.appendChild() ile eklersem görünüyor oluyor
normalşartlarda ben zaten div'in instance'ını tuttuğumdan dolayı
aşağıdaki yönetmin işe yara olması gerekmezmi ayrıca eklediğimbu ekran
bileşenlerini removeNode vs gibi metodlarla geri alıyorum merak
ettiğim nokta JavaScript için Garbage collection yada benzeri bir
mekanizma varmı? yoksa bu nesneleri bellekten nasıl silebiliriz kodu
kafadan hızlı bir şekilde yazdığım için imla hatası yapmış olabilirim
gözardı ediniz asıl kodum hatasız çalışıyor sadece div2 ekrana
gelmiyor fikirlerinizi belirtirseniz sevinirim



function divClass(){

var div = document.createElement("div");
var button = document.createElement("button");
button.attachEvent('onclick',click);
return div;


function click(){

div2 = document.createElement("div");
div.appendChild(div2);
}
}

Volkan Özçelik

unread,
Jul 25, 2009, 7:01:49 AM7/25/09
to ajax...@googlegroups.com
Merhaba Jackson,

function divClass(){

        function click(){

              div2 =  document.createElement("div");
              div.appendChild(div2);
        } /* anonim metodu yukarı aldım */


        var div = document.createElement("div");
        var button = document.createElement("button");
        button.attachEvent('onclick',click);
        return div;
}

yapıp ardından

document.body.appendChild(divClass()); /* "new"siz */

yaparsan kod çalışır.

divClass fonksiyonunu bir DOMNode döner; türü HTMLNode'dur.

divClass nesnesi ise (new divClass() ) bir nesnedir (türü object ya da function)

bir javascript nesnesini document.body 'ye append etmeye çalıştığında başına neler gelir bilemem ;)

Yardımcı olması dlieğimle,
--
Volkan Ozcelik
+> Front End Architect, MessengerFX : http://www.messengerfx.com/
+> I tweet: http://twitter.com/linkibol
+> linkibol.com - in seek for quality links : http://www.linkibol.com/
+> my blog (in Turkish) : http://www.fikribol.com/donkisot/
+> Sardalya JavaScript Library : http://www.sarmal.com/sardalya/

Jackson

unread,
Jul 25, 2009, 8:05:57 AM7/25/09
to ajaxnedir
Merhaba,

Öncelikle yanıtnız için teşekkür ederim. Volkan bey burada new
anahtarını kullanmak yada kullanmamak arasında fark yok (gibi gördüm )
daha önce kullandığım programlama dillerinde rastlamadığım bir durum
olsada javascript ile tanımladığımız function/classlarda constructor
'den değer döndürebiliyoruz. yani zaten uygunsuz bir object tipini
"append " etmeye çalışırsak örneğin İnternet Explorer 'dan "Böyle bir
arabirim desteklenmiyor" hatası aldım yani burada new anahtarını
kullanmadanda sanıyorum aynı işlemi yapabilirim ama kullanıncada pek
farkı yok gibi gördüm açıkçası yinede gözünüze çarpan benim
bilemediğim bir yönü olabilir paylaşırsanız sevinirim. Sanıyorum ilk
denememde bir hata yaptım aşaıdaki şekilde html dosyası sorunsuz
çalıştı. Size ayrıca ilk mesajımda sorduğum soruyu yeniden sormak
istiyorum JavaScript ile gelen bir garbage collection mekanizması yada
aynı işlevi gören bir yapı mevcutmudur yada bellekten temizleme işlemi
ne şekilde yapılır?

iyi Çalışmalar



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<input type="button" value="this is a test" onclick="b();"/>
<script type="text/javascript" >

function b(){

document.body.appendChild(new test());
}

function test(){

var main = document.createElement("div");
var button = document.createElement("button");
main.appendChild(button);
button.attachEvent("onclick",function () { main.appendChild
(document.createElement("button")); } );

return main;
}

</script>
</body>
</html>
Reply all
Reply to author
Forward
0 new messages