Saf JavaScript DOM manipülasyonu. Giriş dom nesnesi yöntemleri


Belge Nesne Modeli veya "DOM", web sayfalarının öğelerine erişmek için bir programlama arabirimidir. Temel olarak, bir sayfanın içeriğini, yapısını ve stillerini okumanıza ve değiştirmenize izin veren bir sayfa API'sidir. Nasıl çalıştığını ve nasıl çalıştığını görelim.

Bir web sayfası nasıl oluşturulur?

Orijinal HTML belgesini oluşturulmuş, stilize edilmiş ve etkileşimli bir sayfaya dönüştürme işlemine "Kritik Oluşturma Yolu" denir. Bu süreç, Kritik Oluşturma Yolunu Anlama'da anlattığım gibi, birden çok adıma bölünebilse de, bu adımlar kabaca iki adıma ayrılabilir. Birincisinde, tarayıcı nihayetinde sayfada neyin görüntüleneceğini belirlemek için belgeyi ayrıştırır ve ikincisinde tarayıcı oluşturur.

İlk adımın sonucu, "render ağacı" olarak adlandırılan şeydir. Ağacı işle Sayfada görüntülenecek HTML öğelerinin ve bunlarla ilişkili stillerin bir temsilidir. Bu ağacı oluşturmak için tarayıcının iki şeye ihtiyacı vardır:

  1. CSSOM, öğelerle ilişkili stillerin sunumu
  2. DOM, öğe gösterimi

DOM neyden yapılmıştır?

DOM, orijinal HTML belgesinin nesne temsilidir. Aşağıda göreceğimiz gibi bazı farklılıkları vardır, ancak özünde bir HTML belgesinin yapısını ve içeriğini çeşitli programlar tarafından kullanılabilecek bir nesne modeline dönüştürme girişimidir.

DOM nesnelerinin yapısı "düğüm ağacı" olarak adlandırılan şeyle temsil edilir. Buna denir, çünkü tek bir ebeveyne sahip, her biri yapraklara sahip olabilen birkaç alt dala ayrılan bir ağaç olarak düşünülebilir. Bu durumda, ana "öğe" kök öğedir, alt öğe "dallar" iç içe öğelerdir ve "yapraklar" öğeler içindeki içeriktir.

Bu HTML belgesini örnek olarak alalım:

İlk web sayfam

Selam Dünya!

Nasılsın?

Bu belge aşağıdaki düğüm ağacı olarak gösterilebilir:

  • html
    • baş
      • başlık
        • İlk web sayfam
    • vücut
      • h1
        • Selam Dünya!
      • p
        • Nasılsın?

DOM ne değildir

Yukarıdaki örnekte, DOM, orijinal HTML belgesinin 1: 1 eşlemesi gibi görünmektedir. Ancak dediğim gibi farklılıklar var. DOM'un ne olduğunu tam olarak anlamak için ne olmadığına bir göz atmamız gerekiyor.

DOM, orijinal HTML'nin bir kopyası değildir

DOM bir HTML belgesinden oluşturulsa da, her zaman tam olarak aynı değildir. DOM'un orijinal HTML'den farklı olabileceği iki durum vardır.

1. HTML biçimlendirme hataları içerdiğinde

DOM, bir HTML belgesinin gerçek (yani önceden oluşturulmuş) öğelerine erişim için kullanılan arabirimdir. DOM oluşturma sürecinde, tarayıcının kendisi HTML kodundaki bazı hataları düzeltebilir.

Bu HTML belgesini bir örnek olarak düşünün:

Selam Dünya!

Belgede eksik öğeler ve HTML için bir zorunluluktur. Ancak ortaya çıkan DOM ağacına bakarsak, bunun düzeltildiğini görebiliriz:

  • html
    • baş
    • vücut
      • Selam Dünya!

    2. DOM, Javascript tarafından değiştirildiğinde

    Bir HTML belgesinin içeriğini görüntülemek için bir arayüz olmanın yanı sıra, DOM'un kendisi de değiştirilebilir.

    Örneğin, Javascript kullanarak DOM için ek düğümler oluşturabiliriz.

    Var newParagraph \u003d document.createElement ("p"); var paragraphContent \u003d document.createTextNode ("Ben" yeniyim! "); newParagraph.appendChild (paragraphContent); document.body.appendChild (newParagraph);

    Bu kod DOM'u değiştirecek, ancak değişiklikler HTML belgesinde görünmeyecek.

    DOM, tarayıcıda gördüğünüz şey değildir (yani, oluşturma ağacı)

    Tarayıcı görünüm alanında, dediğim gibi DOM ve CSSOM'un bir kombinasyonu olan işleme ağacını görüyorsunuz. DOM ile oluşturma ağacı arasındaki fark, ikincisinin yalnızca nihayetinde ekranda görüntülenecek olan şeyden oluşmasıdır.

    İşleme ağacı yalnızca görüntülenenlerle ilgilendiğinden, görsel olarak gizlenen öğeleri hariç tutar. Örneğin, stillere sahip öğeler görüntü yok.

    Selam Dünya!

    Nasılsın?

    DOM öğesini içerecek

    • html
      • baş
      • vücut
        • h1
          • Selam Dünya!
        • p
          • Nasılsın?

    Ancak, işleme ağacı ve dolayısıyla görünüm alanında görünen şey bu öğeye dahil edilmeyecektir.

    • html
      • vücut
        • h1
          • Selam Dünya!

    DOM, DevTools'ta gösterilen şey değil

    Bu fark biraz daha küçüktür çünkü DevTools Element Inspector, bir tarayıcıda sahip olduğumuz DOM'a en yakın yaklaşımı sağlar. Ancak DevTools denetçisi, DOM'da olmayan ek bilgiler içerir.

    Bunun en iyi örneği CSS sözde öğeleridir. Seçiciler kullanılarak oluşturulan sözde öğeler :: önce ve :: sonraCSSOM ve render ağacının bir parçasıdır, ancak teknik olarak DOM'un bir parçası değildir. Bunun nedeni, DOM'un öğeye uygulanan stiller dahil değil, yalnızca orijinal HTML belgesinden oluşturulmasıdır.

    Sözde öğeler DOM'un bir parçası olmasalar da, geliştirici öğe denetçimizde yer alırlar.


    Özet

    DOM, bir HTML belgesinin arayüzüdür. Görüntü alanında neyin oluşturulacağını belirlemenin ilk adımı olarak tarayıcılar tarafından ve sayfanın içeriğini, yapısını veya stilini değiştirmek için Javascript kodu tarafından kullanılır.

DOM genellikle DOM ağacı olarak adlandırılır çünkü düğümler adı verilen bir nesne ağacından oluşur. Belge Nesne Modelinin (DOM) ne olduğunu, belge nesnesine nasıl erişileceğini ve konsolu kullanarak özelliklerini nasıl değiştireceğinizi öğrendiniz, ayrıca HTML ve DOM kaynak kodu arasındaki farkı da öğrendik.

Bu eğiticide, JavaScript ve DOM ile çalışmak için ihtiyacınız olan HTML terminolojisini bulacak, bir ağacın ve DOM düğümlerinin ne olduğunu öğrenecek ve en yaygın düğüm türlerini nasıl belirleyeceğinizi öğreneceksiniz. DOM'u etkileşimli olarak değiştirmek için konsolda bir JavaScript programı da oluşturabilirsiniz.

HTML terminolojisi

HTML ve JavaScript terimlerini anlamak, DOM ile çalışmak için çok önemlidir. Temel terimlere hızlıca bir göz atalım.

Şu HTML öğesine bakın:

Ev

İndex.html'ye bir bağlantı olan bir bağlantı içerir.

  • a - etiket
  • href - öznitelik
  • html - öznitelik değeri
  • Ev - metin.

Açılış ve kapanış etiketleri arasındaki her şey bir HTML öğesi oluşturur.

Önceki öğreticiden index.html dosyasına geri dönelim:




DOM'u öğrenmek


Belge Nesnesi Modeli



JavaScript ile bir öğeye erişmenin en kolay yolu, id niteliğidir. Yukarıdaki bağlantıyı id \u003d "nav" ile index.html dosyamıza ekleyelim.

...

Belge Nesnesi Modeli


Ev

...

Sayfayı bir tarayıcı penceresinde yükleyin (veya yenileyin) ve kodun güncellendiğinden emin olmak için DOM'a bakın.

Ardından öğenin tamamına erişmek için getElementById () yöntemini kullanın. Konsolda şunları girin:

document.getElementById ("nav");
Ev

GetElementById () yöntemi tüm öğeyi alır. Şimdi, nav bağlantısına her erişmeniz gerektiğinde bu nesneyi ve yöntemi girmek zorunda kalmadan, çalışmayı kolaylaştırmak için öğeyi bir değişkene koyabilirsiniz.

let navLink \u003d document.getElementById ("nav");

NavLink değişkeni çapayı içerir. Burada özellikleri ve değerleri kolayca değiştirebilirsiniz. Örneğin, bağlantının konumunu değiştirmek için href niteliğini değiştirin:

navLink.href \u003d "https://www.wikipedia.org";

TextContent özelliğini yeniden atayarak da metni değiştirebilirsiniz:

navLink.textContent \u003d "Wikipedia’ya Git";

Şimdi, bu öğeyi konsolda görüntüleyerek veya Elements etiketini kontrol ederek, nasıl güncellendiğini görebilirsiniz.

navLink;
Wikipedia'ya gidin

Değişiklikler ön uca da yansıtılacaktır.

Sayfayı yenilemek tüm orijinal değerleri döndürür.

Bu noktada, bir öğeye erişmek için belge yöntemini nasıl kullanacağınızı, bir değişkene bir öğeyi nasıl atayacağınızı ve bir öğedeki özelliklerin ve değerlerin nasıl değiştirileceğini anlamalısınız.

DOM ağacı ve düğümleri

DOM'daki tüm öğeler düğümler olarak tanımlanır. Pek çok düğüm türü vardır, ancak en sık çalışacağınız üç ana düğüm vardır:

  1. Eleman düğümü
  2. Metin düğümü
  3. Yorum düğümü

Bir HTML öğesi DOM'daki bir öğe olduğunda, buna öğe düğümü denir. Bir elemanın dışındaki herhangi bir tek metin bir metin düğümüdür ve bir HTML yorumu bir yorum düğümüdür. Bu üç tür düğümün yanı sıra, belge nesnesinin kendisi, diğer tüm düğümlerin kök düğümü olan bir belge düğümüdür.

DOM, genellikle DOM ağacı olarak adlandırılan, iç içe geçmiş düğümlerden oluşan bir ağaç yapısından oluşur. Muhtemelen bir soy ağacının ne olduğunu biliyorsunuzdur - ebeveynlerden, çocuklardan ve yakın akrabalardan oluşan aile bağlarının şematik bir temsilidir. DOM'daki düğümler, diğer düğümlerle olan ilişkilerine göre üst ve alt olarak da adlandırılır.

Örneğin, bir nodes.html dosyası oluşturun. ona bir metin düğümü, yorum ve eleman düğümleri ekleyin.




Düğümler Hakkında Öğrenme


Bir eleman düğümü



Bir metin düğümü.

Html öğe düğümü üst öğedir. head ve body, html'nin alt düğümleridir. body, üç alt düğüm içerir ve hepsi aynı düzeydedir - düğümün türü, iç içe geçme düzeyini etkilemez.

Not: HTML tarafından oluşturulan DOM ile çalışırken, HTML kaynak girintisi, DevTools Öğeleri sekmesinde görünmeyecek birçok boş metin düğümü oluşturur. Bağlantıda bunun hakkında daha fazla bilgi.

Düğüm tipini belirleme

Bir belgedeki her düğümün, nodeType özelliği aracılığıyla erişilen bir türü vardır. Mozilla Geliştirici Ağı, tüm düğüm türü sabitlerinin güncellenmiş bir listesine sahiptir. Aşağıda en yaygın düğüm türlerinin bir tablosu bulunmaktadır.

Geliştirici Araçlarındaki Öğeler sekmesinde, DOM'da herhangi bir satırı tıkladığınızda ve seçtiğinizde, yanında \u003d\u003d $ 0 değerinin göründüğünü fark edebilirsiniz. Bu, şu anda etkin olan öğeye erişmenin çok uygun bir yoludur.

Node.html konsolunda, body (h1) içindeki ilk öğeye tıklayın.

NodeType özelliğini kullanarak seçili düğümün türünü öğrenmek için konsolu kullanın.

$ 0.nodeType;
1

H1 öğesini seçerek, ELEMENT_NODE öğesine başvuran çıktı olarak 1 göreceksiniz. Aynısını diğer düğümlerle yapın ve sırasıyla 3 ve 8 döndürürler.

Bir öğeye nasıl erişileceğini bilerek, DOM'daki öğeleri vurgulamadan düğümün türünü görebilirsiniz.

document.body.nodeType;
1

NodeType'a ek olarak, bir metin veya yorum düğümünün değerini bulmak için nodeValue özelliğini ve bir öğenin etiketini almak için nodeName özelliğini de kullanabilirsiniz.

Olayları kullanarak DOM'u değiştirme

Şimdiye kadar, konsolda DOM'un nasıl değiştirileceğini gördünüz ve bu tür değişikliklerin geçici olduğu biliniyor; sayfa her yenilendiğinde tüm değişiklikler kaybolur. Konsolda sayfanın arka plan rengini güncellediniz. Arka plan rengini değiştiren etkileşimli bir düğme oluşturmak için bu eğitimde öğrendiklerinizi zaten bildiklerinizle birleştirmeyi deneyin.

İndex.html dosyanıza geri dönün ve kimliğine sahip bir düğme öğesi ekleyin. Ayrıca yeni js dizini js / scripts.js'deki yeni dosyaya bir bağlantı eklemeniz gerekir.




DOM'u öğrenmek


Belge Nesnesi Modeli





JavaScript'teki bir olay, bir kullanıcının gerçekleştirdiği bir eylemdir. Kullanıcı fareyi bir öğenin üzerine getirir, üzerine tıklar veya klavyedeki belirli bir tuşa tıklar - bunların hepsi olaylardır. Bu özel durumda, düğme, kullanıcı tıkladığında bir işlem yapmalıdır. Bunu yapmak için bir olay dinleyicisi eklemeniz gerekir. Bir scripts.js dosyası oluşturun ve bunu yeni bir js dizinine kaydedin. Dosyada, bir düğme elemanı tanımlamanız ve onu bir değişkene atamanız gerekir.

AddEventListener () yöntemini kullanarak, düğme tıklamaları dinleyecek ve tıklamadan sonra işlevini gerçekleştirecektir.

...
button.addEventListener ("tıklayın", () \u003d\u003e (
// eylem buraya gidecek
});

Fonksiyonun içine, arka plan rengini fuşya olarak değiştirmek için önceki kılavuzdaki kodu koymanız gerekir.

...

Komut dosyası şöyle görünüyor:

let button \u003d document.getElementById ("changeBackground");
button.addEventListener ("tıklayın", () \u003d\u003e (
document.body.style.backgroundColor \u003d "fuşya";
});

Dosyayı kaydedin ve kapatın. Tarayıcınızda index.html sayfasını yenileyin. Yeni butona tıkladığınızda sayfanın arka plan rengi değişecektir.

Etiketler :,

Bu eğitimde DOM'un ne olduğuna, neden gerekli olduğuna ve nasıl oluşturulduğuna bakacağız.

DOM nedir?

Bir tarayıcı bir sayfa istediğinde ve sunucudan yanıt olarak HTML kaynağını aldığında, önce onu ayrıştırması gerekir. HTML kodunu analiz etme ve ayrıştırma sürecinde, tarayıcı buna dayalı bir DOM ağacı oluşturur.

Bu ve diğer birkaç işlemi tamamladıktan sonra, tarayıcı sayfayı oluşturmaya başlar. Elbette bu süreçte, orijinal HTML kodunu değil, oluşturduğu DOM ağacını zaten kullanıyor.

DOM, tarayıcının sunucudan aldığı HTML kodunu temel alarak bilgisayar belleğinde oluşturduğu bir belge nesne modelidir.

Basit bir ifadeyle, HTML sayfanın metnidir ve DOM, tarayıcının metni ayrıştırırken oluşturduğu bir dizi ilişkili nesnedir.

Chrome'da, tarayıcının aldığı sayfanın kaynak kodu Web Geliştirici Araçları panelinin Kaynak sekmesinde görüntülenebilir.


Chrome, oluşturduğu DOM ağacını görüntülemek için bir araca sahip değildir. Ancak bu DOM ağacının HTML kodu biçiminde bir temsili vardır, "Öğeler" sekmesinde mevcuttur. Elbette bu DOM temsili, bir web geliştiricisinin birlikte çalışması için çok daha uygundur. Bu nedenle, DOM'u bir ağaç yapısı olarak temsil edecek bir araç yoktur.


Bu modeldeki nesneler, belgenin kendisi de dahil olmak üzere HTML'deki hemen hemen her şeyden (etiketler, metin içeriği, yorumlar vb.) Oluşturulur. Modelde bu nesneler arasındaki bağlantılar, HTML öğeleri, birbirine göre kodda bulunur.

Bu durumda, belgenin oluşturulduktan sonra DOM'si değiştirilebilir. DOM değiştiğinde, tarayıcı sayfa görüntüsünü neredeyse anında yeniden çizer. Sonuç olarak, elimizde sayfa oluşturma her zaman DOM ile eşleşir.

DOM'u programlı olarak okumak ve değiştirmek için, tarayıcı bize DOM API veya başka bir deyişle programlı arayüz sağlar. Basit bir şekilde, DOM API, kullanabileceğimiz çok sayıda farklı nesne, bunların özellikleri ve yöntemlerinden oluşan bir settir. dOM okur ve değişir.

Çoğu durumda JavaScript, DOM ile çalışmak için kullanılır. bugün, bir tarayıcıda kodlanabilen tek programlama dilidir.

DOM API'ye neden ihtiyacımız var? JavaScript kullanarak sayfayı anında değiştirebilmemiz için buna ihtiyacımız var, yani. dinamik ve etkileşimli hale getirin.

DOM API bize (geliştiriciler) sayfadaki her şeyi değiştirebileceğimiz ve kullanıcıyla etkileşime girebileceğimiz çok sayıda yöntem sunar. Şunlar. bu programlama arayüzü, karmaşık arayüzler, formlar oluşturmamıza, kullanıcı eylemlerini işlememize, sayfadaki çeşitli öğeleri eklememize ve kaldırmamıza, içeriklerini, özelliklerini (niteliklerini) değiştirmemize ve çok daha fazlasını yapmamıza olanak tanır.

Artık web'de, komut dosyalarında DOM ile çalışmayan neredeyse hiç site yok.

Sayfanın HTML'si nelerden oluşur?

Belge nesne modelinin çalışmasına geçmeden önce, ilk olarak bir web sayfasının (HTML belgesi) kaynak kodunun ne olduğunu hatırlamanız gerekir.

Bir web sayfasının kaynak kodu, etiketler, öznitelikler, yorumlar ve metinden oluşur. Etiketler temel HTML sözdizimidir. Çoğu eşleştirilmiş. Bu durumda, biri açılış, diğeri kapanış olanıdır. Böyle bir etiket çifti bir HTML öğesi oluşturur. HTML öğelerinin ek parametreleri olabilir - öznitelikler.

Bir belgede, belirli bir biçimlendirme oluşturmak için bazı öğeler diğerlerinin içindedir. Sonuç olarak, bir HTML belgesi, iç içe geçmiş HTML öğeleri kümesi olarak düşünülebilir.

Örnek olarak, aşağıdaki HTML kodunu göz önünde bulundurun:

Sayfa başlığı

Makale başlığı

Makale bölümü

Makale içeriği

Bu kodda, kök öğe html'dir. İç içe geçmiş baş ve vücut elemanlarına sahiptir. Head öğesi başlığı içerir ve gövde h1 ve div öğelerini içerir. Div öğesi sırayla h2 ve p içerir.

Şimdi bir tarayıcının HTML kodunu temel alarak bir DOM ağacını nasıl oluşturduğuna bakalım.

Bir belgenin DOM ağacı nasıl oluşturulur?

Yukarıda açıklandığı gibi, tarayıcı HTML öğelerine ve sayfanın kaynak kodunun diğer varlıklarına dayalı bir ağaç oluşturur. Bu işlem sırasında, öğelerin iç içe geçmesini hesaba katar.

Sonuç olarak, tarayıcı sonuçta elde edilen DOM ağacını yalnızca çalışmasında kullanmakla kalmaz, aynı zamanda JavaScript aracılığıyla rahatça çalışabilmemiz için bize bir API sağlar.

DOM oluştururken, tarayıcı bu dilin HTML öğelerinden, metninden, yorumlarından ve diğer varlıklarından nesneler (DOM ağacının düğümleri) oluşturur.

Çoğu durumda, web geliştiricileri yalnızca HTML öğelerinden oluşan nesnelerle (düğümler) ilgilenir.

Aynı zamanda, tarayıcı yalnızca HTML öğelerinden nesneler oluşturmakla kalmaz, aynı zamanda koddaki her birinin diğeriyle nasıl ilişkili olduğuna bağlı olarak bunları belirli bağlantılarla birbirine bağlar.

Doğrudan bazı öğelerde bulunan öğeler, onunla ilişkili alt öğelerdir. Ve her biri için bir ebeveyndir. Ayrıca birbirleriyle ilgili tüm bu unsurlar kardeşlerdir (kardeşler).

Dahası, HTML'de herhangi bir öğenin her zaman bir ebeveyni vardır (doğrudan içinde bulunduğu HTML öğesi). HTML'de, bir öğenin birden çok üst öğesi olamaz. Tek istisna html öğesidir. Onun ebeveyni yok.

DOM ağacını tarayıcı oluştururken elde etmek için, tüm öğeleri birbirleriyle ilişkilerine göre "sıralamanız" yeterlidir.

DOM ağacı oluşturma, yukarıdan aşağıya doğru yapılır.

Bu durumda, DOM ağacının kökü her zaman belgenin kendisidir (belge düğümü). Dahası, ağaç HTML kodunun yapısına bağlı olarak oluşturulur.

Örneğin, yukarıda incelediğimiz HTML kodu aşağıdaki DOM ağacına sahip olacaktır:


Bu ağacın en üstünde belge düğümü bulunur. Bu düğüm html ile ilgilidir, onun alt noktasıdır. Html düğümü, html öğesi ( ...). Baş düğümler ( ...) ve vücut ( ...) html'ye ana bağlantıya sahip. Birbirleriyle ilişkili olarak, kardeşler çünkü bir ebeveyni var. Baş düğüm, başlık ile ilişkilidir (lt; başlık\u003e ...), o onun çocuğu. H1 ve div düğümleri, ebeveyn olduğu gövde ile ilişkilidir. Div düğümü h2'ye bağlıdır (

...

) ve p (), onlar onun çocukları.

Ağaç, yukarıda belirtildiği gibi, belge nesnesiyle (düğüm) başlar. Buna karşılık, html öğesinden oluşan bir alt düğüme sahiptir ( ...). Baş unsurları ( ...) ve vücut ( ...) html içindedir ve bu nedenle çocuklarıdır. Ayrıca, baş düğüm, başlığın ebeveynidir (lt; başlık\u003e ...). H1 ve div öğeleri vücudun içinde yuvalanmıştır, bu nedenle onlar onun çocuklarıdır. Div doğrudan h2 öğelerini içerir (

...

) ve P (). Bu, her biri için div düğümünün ebeveyn olduğu anlamına gelir.

HTML koduna dayalı olarak bir tarayıcıda DOM ağacı oluşturmak bu kadar kolaydır.

Neden bir DOM ağacının nasıl oluşturulduğunu bilmeniz gerekiyor? Birincisi, bir şeyi değiştirmek istediğiniz ortamın anlaşılmasıdır. İkinci olarak, DOM ile çalışırken çoğu eylem, gerekli öğeleri bulmaya (seçmeye) bağlıdır. DOM ağacının nasıl çalıştığını ve düğümler arasındaki bağlantıları bilmeden, içinde belirli bir öğeyi bulmak oldukça zor olacaktır.

Görev

Şekilde gösterilen DOM ağacına göre, HTML kodu oluşturun.



Konu gerçekten karmaşık. Ama dedikleri gibi, şeytan boyandığı kadar korkunç değildir. İşte burada, kırılması zor ceviz bana geliyor: bir tür “boyama” süper görevi olabildiğince sindirilebilir, ancak tamamen ilkel değil. Şimdiye kadar okuduğum tüm materyaller ya zaum ya da ilkel olma eğilimindedir.

DOM nedir

Kısaltma DOM duruyor Belge Nesnesi Modeli (Belge Nesnesi Modeli).

DOM HTML, XHTML ve XML belgelerine, yani HTML, XHTML ve XML etiketlerinin ve niteliklerinin yanı sıra CSS stillerinin programlama nesneleri olarak sunulması için bir programlama arayüzüdür. Hem JavaScript hem de diğer web programlama dilleri bu modelle çalışır.

Biraz tarih

4 seviye vardır DOM (0, 1, 2 ve 3).

Seviye 0(1996) dahil modeller DOM1. düzeyden önce var olan koleksiyonlar şunlardır: document.images, document.forms, document.layers ve document.all. Bu modeller resmi olarak teknik özellikler değildir. DOMyayınlanan W3C... Aksine, standardizasyon süreci başlamadan önce var olanlarla ilgili bilgi sağlarlar.

Seviye 1 (1997) ayrıca XML belgelerini işlemek için temel işlevleri de içeriyordu: tek tek düğümlerle çalışmanın birden çok yolu, XML işleme talimatlarıyla çalışma, vb.

Dışında, DOM Seviye 1, tek tek HTML öğelerini işleyebilen bir dizi özel arabirim içerir. Örneğin, HTML tabloları, formlar, seçme listeleri ve daha fazlasıyla çalışabilirsiniz.

İÇİNDE DOM düzey 2 (2002) birkaç yeni özellik ekledi.

Eğer DOM 1. seviye ad alanı desteğinden yoksundu, arayüzler DOM Düzey 2, XML belgeleri oluşturma ve işleme gereksinimleriyle ilişkili ad alanlarını yönetme yöntemlerini içerir.

Dışında, DOM 2. düzey etkinlikleri destekler.

Seviye 2, mevcut özellik seviyesidir DOM, Ancak W3C Seviye 3 spesifikasyonunun bazı bölümlerini önerir.

DOM düzey 3 işlevselliği artıran bir spesifikasyonun çalışma taslağıdır DOM Seviye 2. Spesifikasyonun bu sürümünün en önemli özelliklerinden biri, birden çok uzantı ile çalışabilme becerisidir. DOM.

Yazılım arayüzü ne anlama geliyor?

ingilizce kelime arayüz "iletişim alanı" olarak tercüme edilebilir. Kabaca bir bilgisayar, yalnızca iki şeyi anlar: boş bir parça ve dolu bir parça. Bir bilgisayar tarafından konuşulan dil, sonsuz sayıda farklı kombinasyon veren sonsuz bir sıfırlar ve birler dizisi olarak düşünülebilir.

Herhangi bir program kodu, bilgisayarın birlikte çalıştığı bu "sıfırların ve birlerin" programcı yorumu için anlaşılırdır. Dolayısıyla, herhangi bir programlama dili bir insan-makine arayüzüdür.

Tarayıcılar, diğer bilgisayar uygulamalarıyla aynı şekilde çalışır. HTML, XML, CSS, JavaScript, PHP, Perl, vs.'yi "sıfırlar ve birler" olarak yorumlarlar. Bu çok dillilikle çalışmak için ortak bir platforma ihtiyacınız var. Bu platform DOM - belirli bir programlama dilinden veya biçimlendirmeden bağımsız bir şartname. Web sayfalarının oluşturulmasıyla ilgili birçok popüler programlama dilinde kullanılabilen ve nesneleri anlayabilen ve yorumlayabilen bir arayüzdür. DOM.

DOM ve tarayıcılar

DOM ve JavaScript

JavaScript'te, nesnelerin hiyerarşik merdiveninin en üstünde DOM, bu arayüze bir tür "iletken" nesnedir belgeve nesneler DOM özellikleri, özelliklerinin özellikleri vb. haline gelir. Onlar da denir dOM düğümleri.

DOM düğümleri

İÇİNDE DOM 2. düzey 12 tür düğüme sahiptir. Her düğüm türünün arkasında DOM benzersiz ad ile sabit sabit. Düğümlerin çoğu birlikte çalışmak üzere tasarlanmıştır XML... Montajda HTML - JavaScriptuğraştığımız, sadece 5 tip kullanılabilir. Ancak bu "buzdağının görünen ucu" bile, bir veya iki seansta kapsanamayacak kadar "yayılan bir ağaçtır".

Spesifikasyonda tanımlandığı gibi eksiksiz düğüm tipi sabitleri seti W3C DOM (için mevcut düğümler HTML - JavaScript):

Sabit isim

Değer

Açıklama

Düğüm.ELEMENT_NODE

Öğe düğümü (belgenin kök öğesini döndürür, HTML belgeleri için bu HTML öğesidir)

Düğüm.ATTRIBUTE_NODE

Öznitelik düğümü (XML veya HTML belgesindeki bir öğenin özniteliğini döndürür)

Metin düğümü (#text)

Düğüm.CDATA_SECTION_NODE

CDATA Bölüm Düğümü (XML: Karakter Verilerini Görüntülemek için Alternatif Sözdizimi)

Düğüm.ENTITY_REFERENCE_NODE

Node.ENTITY_NODE

Bölüm düğümü

Node.PROCESSING_INSTRUCTION_NODE

XML Yönergesi Düğümü

Node.COMMENT_NODE

Yorum düğümü

Düğüm.DOCUMENT_NODE

Belge düğümü (belgenin içeriğine erişmenin ve bileşenlerini oluşturmanın temeli)

Düğüm.DOCUMENT_TYPE_NODE

Belge türü düğümü (verilen belgenin türünü, yani DOCTYPE etiketinin değerini döndürür)

Düğüm.DOCUMENT_FRAGMENT_NODE

Belge parçası düğümü (belge ağacının bir bölümünü çıkarmak, yeni bir belge parçası oluşturmak, bir düğümün alt öğesi olarak bir parça eklemek, vb.)

Node.NOTATION_NODE

Gösterim düğümü *

* Gösterimler, ayrıştırılmamış bölümlerin biçimini, gösterim özniteliğine sahip öğelerin biçimini veya bir yönergenin adreslendiği uygulamayı tanımlayan adlardır. (Net değil? Ben de pek iyi değilim.)

DOM'daki belge yapısı

Tüm belge nesneleri DOM düğümleridir. Temel bir belgeyi düşünün:

< title>DOM

"center"\u003e Başlık

Paragraf metni

İşte DOM ağacının bir diyagramı:

Her düğümün alt düğümleri olabilir (oklar diyagramda onlara götürür). Belge nesnesi - belge ağacının tabanı - aynı zamanda bir düğümdür, ancak bir üst düğüme sahip değildir ve diğer düğümlerin sahip olmadığı bir dizi özellik ve yönteme sahiptir. Bir alt düğümü vardır: eleman .

Eleman iki alt düğüm: ve İçerdikleri tüm unsurların çocuk haline geldiği.

Dikkat!

"Öğe" ve "etiket" eşanlamlı değildir. Etiket bir biçimlendirme işaretidir: iki farklı etikettir. Ve bir öğe, şu etiketlerle işaretlenmiş bir nesnedir:

Paragraf metni

.

Elementler , <h1> ve <p>Kendi içinde barındırır <b>metin</b>... Bunlar onların çocukları <b>metin düğümleri</b>... Eleman <h1> Ayrıca orada <b>nitelik</b>: align \u003d "center". <b>Öznitelik düğümleri</b> aynı zamanda onları içeren öğelerin alt düğümleridir.</p> <p>DOM ağaç düğümleriyle çalışırken, özellikleri ve yöntemleri kullanılır.</p> <h4>Düğümlerin bazı özellikleri</h4> <p>Küçük giriş</p> <p>Bir kez daha tekrar ediyorum: komut dosyalarında sayfa öğelerine atıfta bulunduğumuzda, sadece Javascript diliyle değil, aynı zamanda onun içine yerleştirilmiş arayüzle de ilgileniyoruz. <b>DOM</b>... Bazen bunun farkında olmanız gerekir, bazen "düzyazıda söylediklerimizi" unutabilirsiniz.</p> <p>Nesne modelinden bazı özellikler ve yöntemler <b>DOM</b> biz zaten bu şekilde kullandık. Bu nedenle, zaman zaman önceki derslere bağlantılar sağlayacağım.</p> <p>Bu eğitimde, tüm tarayıcılardaki tüm düğümlerin tüm özelliklerini göz önünde bulundurarak "akademik" yoldan gitmeyeceğiz. Öncelikle, bunların en pratik ve "çatışmasız" olanları ile tanışalım.</p> <p>Bu yüzden <b>yapmayacağız</b> alışıldığı gibi "temel özellikler" ile başlayın: <b>nodeName</b> ve <b>nodeValue</b>.</p> <p>etiket adı</p> <p>Öğe etiketinin adını taşıyan bir dize döndürür. Tüm tagName değerleri yalnızca büyük harfli karakterler içerir.</p> <p><b>Sözdizimi</b></p> <i>element</i>.<b>etiket adı</b> <p><b>Misal</b></p> <span><!-- Вставим <span>, чтобы имя было не из одной буквы. --> </span> <p><span id= "testTagName" > TagName özelliğini test etme</p> <p> </span> <span><script type="text/javascript"> </span> document.<b>write </b>(document.<b>getElementById </b>(<i>"testTagName" </i>).tagName) </script> </p> <p><b>Sonuç</b></p> <p>TagName özelliğini test etme</p> <p>innerHTML</p> <p>Bu özellikle zaten karşılaştık (bkz.Ders 10). Ve şimdi nereden geldiğini anlıyoruz: "evden."</p> <p>Öğenin içeriğine erişim sağlar. Yalnızca metin içeriğini değil, öğenin içindeki tüm HTML etiketlerini de belirtir.</p> <p>Bu özellik sadece okunabilir değil, aynı zamanda içeriği değiştirmek için de geçerlidir.</p> <p>Not</p> <p>Çeşitli öğeler için IE'de <b>innerHTML</b> salt okunur çalışır: bunlar dışındaki tüm tablo öğeleridir <td> ve <th> , ve <title> ve <frameset> .</p> <p>Örneğin, öğesi olmayan boş bir tablo oluşturduk <td> ve bunu programlı olarak içine eklemek istiyoruz <tr> vasıtasıyla <b>innerHTML</b>:</p> <p><html><br> <head></head><br> <body onload= </span><span>"document.getElementById (" test "). innerHTML \u003d" <td>test dizisi</td>"" </span>> <br><table><br> <tr id= "test" ></tr><br> </table> <br></body><br> </html> </p> <p>IE bir "bilinmeyen çalışma zamanı hatası" atacak ve diğer tarayıcılar ekleyecektir.</p> <p>Bu arada, elemanın mevcut içeriğini sorguladığımızda <tr> , örneğin, aracılığıyla <span>alert (document.getElementById ("id"). innerHTML)</span>sonra IE'de işe yarayacaktır.</p> <p><b>Sözdizimi</b></p> <i>element</i>.<b>innerHTML</b> = <i>"atanmış metin"</i> <p><b>Misal</b></p> <table class="code"><tr><td><span><!-- читаем текст отсюда<br> (исходный элемент делаем невидимым) --> </span><br><p style= "display: none;" id= "testInnerHTML" ><b style= "color: red;" > İnnerHTML özelliğini test etme</b></p> <br><span><!-- вставляем его сюда --> </span><br><p id= "target" >Eklenecek paragraf</p> <br><span><script type="text/javascript"> </span><br><span>// Эта функция читает текст и вставляет его в заданный абзац. </span><br>function testRead() { <br> document.<b>getElementById </b>(<i>"target" </i>).innerHTML = document.<b>getElementById </b>(<i>"testInnerHTML" </i>).innerHTML<br><span>}<br><span>// Эта функция изменяет текст заданного абзаца. </span><br> function </span> testChange() { <br> document.<b>getElementById </b>(<i>"target" </i>).innerHTML = <i>"<span style="color: blue;">Перекрашиваем и меняем текст</span>" </i><br><span>}<br><span>// Эта функция возвращает свойство в исходное положение. </span><br> function </span> testReset() { <br> document.<b>getElementById </b>(<i>"target" </i>).innerHTML = <i>"Абзац для вставки" </i><br>} <br></script> <br><form><br> <input type= "button" value= <span>"innerHTML'yi oku"</span> onClick \u003d "testRead ();" \u003e <br> <input type= "button" value= "innerHTML'yi değiştir" onClick= "testChange();" ><br> <input type= "button" value= "deşarj" onClick= "testReset();" ><br> </form> </td> </tr></table><p><b>İnnerHTML özelliğini test etme</b></p> <p>Eklenecek paragraf</p> <p><b>innerHTML</b><br> var text \u003d element.innerHTML; <br> element.innerHTML \u003d ""; <br> Yeni bir innerHTML atamak, yeni değer mevcut değere eklense bile (+ \u003d) kodun üzerine yazılır. Bu şekilde eklenen komut dosyaları çalıştırılmaz.</p> <p><b>outerHTML</b><br> Tüm öğeyi içerir, değiştirilemez. Teknik olarak, bu özelliğe yazmak, eskisinin yerini alan yeni bir öğe oluşturur. Değişkenlerdeki eski öğeye yapılan başvurular değiştirilmez.</p> <p><b>veri</b><br> textNode.data - metin düğümlerinin ve yorumların içeriği</p> <p><b>metin içeriği</b><br> element.textContent - öğenin içindeki etiketsiz metin. <br> TextContent ile pek çok ortak noktası olan özel bir innerText özelliği de vardır.</p> <h2>Öğe görünürlüğü</h2> <p><b>gizli</b><br> element.hidden \u003d true <br> Gizli öznitelik IE11'de desteklenmez.</p> <h2>Öznitellikler</h2> <p>DOM'daki standart özniteliklerin çoğu nesnenin özellikleri haline gelir: <br> element.id \u003d "id" <br> Standart olmayan öznitelikler için özellik oluşturulmaz (tanımsız)</p> <p>Kendi DOM mülklerinizi oluşturabilirsiniz: <br> element.myData \u003d (ad: "John", soyad: "Smith"); <br> ve yöntemler: <br> element.myFunc \u003d function () (this.nodeName uyarısı); <br> Bu işe yarar çünkü DOM düğümleri normal JavaScript nesneleri. Bu tür standart dışı özellikler ve yöntemler, etiketin görünümünü etkilemez ve yalnızca JavaScript'te görülebilir.</p> <p><b>Etiket niteliklerine erişim:</b><br> element.hasAttribute (ad) <br> element.getAttribute (ad) <br> element.setAttribute (ad, değer) <br> element.removeAttribute (ad) <br> element.attributes, sözde bir öznitelik dizisidir.</p> <p>Öznitelikler büyük / küçük harfe duyarlı değildir (html) ve özellikler duyarlıdır (javaScript). <br> Öznitelik değeri her zaman bir dizedir.</p> <p>Özellik: a.getAttribute ("href") - HTML'de tam olarak ne olduğunu gösterir <br> Özellik: a.href - öznitelik değerinden farklı olabilir <br> Çoğu zaman, bir özellik bir niteliğe bağlıdır, ancak bunun tersi geçerli değildir. Özelliği değiştirmek, özniteliği etkilemez.</p> <h3>Sınıflarla çalışmak</h3> <p>Sınıf özniteliğinin iki özelliği vardır: <br> className - dize <br> classList - nesne</p> <p>classList nesnesinin yöntemleri: <br> element.classList.contains ("class") - nesnenin belirtilen sınıfı içerip içermediğini kontrol edin <br> element.classList.add ("sınıf") <br> element.classList.remove ("sınıf") <br> element.classList.toggle ("sınıf")</p> <p>classList bir sözde dizidir ve bir for döngüsü üzerinden yinelenebilir.</p> <h3>veri öznitelikleri</h3> <p>Özel veri öznitelikleri yalnızca öznitelikler olarak değil, aynı zamanda veri kümesi özelliği aracılığıyla da kullanılabilir <br> data-about \u003d "bir değer" <br> element.dataset.about</p> <h2>Düğümlerin sırası</h2> <p>parent.contains (çocuk) - doğru veya yanlış <br> alt düğümün üst düğümde yuvalanmış olup olmadığını kontrol eder</p> <p>nodeA.compareDocumentPosition (nodeB) - Öğelerin içeriği ve göreceli sırası hakkında bilgi sağlar. Dönüş değeri bitsel bir maskedir:</p> <h2>Düğüm ekleme ve kaldırma</h2> <p>var div \u003d document.createElement ("div") <br> document.createTextNode ("metin")</p> <p>parent.appendChild (element) - eleman ebeveynin sonuna eklenir <br> parent.insertBefore (element, nextSibling) - öğe nextSibling'den önce eklenir <br> parent.insertBefore (element, parent.firstChild) - başa eklendi <br> parent.insertBefore (element, null) - appendChild gibi çalışır <br> Tüm ekleme yöntemleri eklenen düğümü döndürür. <br> Bir öğeyi taşıdığınızda, önce onu eski yerden kaldırmanız gerekmez, ekleme yöntemleri bunu otomatik olarak yapar.</p> <p>element.insertAdjacentHTML (nerede, html) - belgenin herhangi bir yerine rastgele HTML kodu ekler. Html'nin öğeye göre nereye ekleneceğini belirtir - beforeBegin, afterBegin, beforeEnd, afterEnd. <br> element.insertAdjacentElement (nerede, newElement) <br> element.insertAdjacentText (nerede, metin) <br> son iki yöntem Firefox'ta desteklenmiyor</p> <p>node.append (... nodes) - düğümün sonuna düğümler ekler, <br> node.prepend (... nodes) - bir düğümün başlangıcına düğüm ekler, <br> node.after (... nodes) - düğümden sonra düğüm ekler, <br> node.before (... düğüm) - düğümden önce düğümler ekler, <br> node.replaceWith (... nodes) - düğüm yerine düğümler ekler. <br> buradaki düğümler, virgülle ayrılmış, herhangi bir miktar ve kombinasyondaki düğümler veya dizelerdir.</p> <p>var fragment \u003d document.createDocumentFragment (), bir belgeye eklendiğinde kaybolan ve yalnızca alt öğelerini bırakan bir DOM düğümünün taklididir. Modern tarayıcılarda önerilmez.</p> <p>element.cloneNode (true) - öğenin derin kopyası <br> element.cloneNode (false) - alt öğeler olmadan kopyala</p> <p>parent.removeChild (öğe) <br> parent.replaceChild (newElement, element) <br> element.remove () - üst öğeye referans vermeden öğeyi doğrudan kaldırır. <br> Yöntemler uzak düğümü döndürür</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> </div> </div> </div> </div> </div> </div> </div> </div> <div class="tm_sidebar"> <div class="sidebar_home"> <div class="gsense"> <div id="mymaju1" style="height:500px;width:300px;" align="center"></div> </div> <div class="sidebarwidget"> <ul> <li id="text-3" class="widget widget_text"> <div class="textwidget"> <div class="sidebar-orange">Kategoriler</div> </div> </li> <li id="nav_menu-3" class="widget widget_nav_menu"> <div class="menu-pravoe-menyu-nizhnee-container"> <ul id="menu-pravoe-menyu-nizhnee" class="menu"> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/windows-10/">Windows 10</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/browsers/">Tarayıcılar</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/smartphones/">Akıllı telefonlar</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/antivirus/">Antivirüs</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/onroad/">Yolda</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/terms/">Koşullar</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/apple/">elma</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/android/">Android</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/program/">Programlar</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/category/ios/">Ios</a></li> </ul> </div> </li> </ul> </div> <div class="sidebarwidget"> <ul> <li id="text-3" class="widget widget_text"> <div class="textwidget"> <div class="sidebar-orange">Popüler</div> </div> </li> <li id="nav_menu-3" class="widget widget_nav_menu"> <div class="menu-pravoe-menyu-nizhnee-container"> <ul id="menu-pravoe-menyu-nizhnee" class="menu"> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/windows-10/kak-zarabatyvat-na-rolikah-v-yutube-kak-zarabotat-na-yutub-kanale/">Bir YouTube kanalında nasıl para kazanılır: YouTube yıldızlarının sırları</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/network/realnye-avtomaticheskie-programmy-dlya-zarabotka-deneg-v/">İşlemden para kazanmak Bilgisayarda oturarak nasıl para kazanılır</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/printers/pristavka-dvb-t2-chto-za-perfeo-pravilnoe-podklyuchenie-i-nastroika-dvb-t2/">DVB-T2 set üstü kutularının doğru bağlantısı ve kurulumu</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/internet/pravilnoe-podklyuchenie-i-nastroika-dvb-t2-pristavki-pravilnoe-podklyuchenie-i/">Bir DVB-T2 set üstü kutusunun doğru bağlantısı ve kurulumu Sonuç olarak</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/terms/perfeo-dvb-t2-pristavka-dlya-cifrovogo-tv-pravilnoe-podklyuchenie-i-nastroika-dvb-t2/">DVB-T2 set üstü kutularının doğru bağlantısı ve kurulumu</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/ios/portativnaya-akustika-jbl-go-black-otzyvy-besprovodnaya-akustika-jbl-go-black-jblgoblk--/">Kablosuz hoparlörler JBL GO Black (JBLGOBLK) - İncelemeler</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/internet/vvody-k-silovym-transformatoram-vvody-vysokovoltnye-vst-vsta/">Yüksek voltaj burçları vt, vsta, vtb</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/printers/vysokochastotnaya-svyaz-po-lep-sistemy-vysokochastotnoi-svyazi-v-sovremennoi/">Modern elektrik enerjisi endüstrisinde yüksek frekanslı iletişim sistemleri Yüksek frekanslı işleme ekipmanları</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/program/cifrovaya-sistema-vch-svyazi-po-lep-mc04-plc-sistemy-vysokochastotnoi/">Modern elektrik enerjisi endüstrisinde yüksek frekanslı iletişim sistemleri Yüksek frekanslı iletişim ekipmanları</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://3ddroid.ru/tr/smartphones/shkolnyi-radiouzel-rush-1-30-200vt-osnashchaem-shkolnyi-radiouzel-obyazatelnaya-ssylka-v-dokumentacii/">Bir okul radyo merkezini donatmak</a></li> </ul> </div> </li> </ul> </div> </div> </div> </div> <div class="footer"> <div class="footer_brick"> <div class="footer_brick_box"> <div class="footer_brick_1"> <div class="footerwidget"> <ul> </ul> </div> </div> <div class="footer_brick_3"> <div class="footerwidget"> <ul> </ul> </div> </div> </div> </div> <div class="footerin"> <div class="footerin_1"> <span> © 2020 Mobil ve Bilgisayar Cihazları</span> </div> </div> </div> </div> <script> jQuery(document).ready(function() { jQuery("img.lazy").lazy(); }); </script> <script type='text/javascript'> /* <![CDATA[ */ var thickboxL10n = { "next": "\u0414\u0430\u043b\u0435\u0435 \u2192", "prev": "\u2190 \u041d\u0430\u0437\u0430\u0434", "image": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", "of": "\u0438\u0437", "close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", "noiframes": "\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u043e\u0432. \u0423 \u0432\u0430\u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0442\u0435\u0433\u0438 iframe, \u043b\u0438\u0431\u043e \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0445 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442.", "loadingAnimation": "https:\/\/3ddroid.ru\/wp-includes\/js\/thickbox\/loadingAnimation.gif" }; /* ]]> */ </script> <script type='text/javascript' src='/wp-includes/js/thickbox/thickbox.js?ver=3.1-20121105'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=4.9.2'></script> <script type='text/javascript' src='/wp-includes/js/backbone.min.js?ver=1.2.3'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/plugins/custom-contact-forms/wp-api/wp-api.js?ver=1.2'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/menu.js?ver=1.0'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/scrolltotop.js?ver=1.0'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/responsive_nav.js?ver=1.0'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/jquery-menuscrolltofixed.js?ver=1.0'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/search.js?ver=0.1'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/jquery.bxslider.min.js?ver=4.1'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/jquery_bxslider_min_load.js?ver=4.1'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/jquery.swipebox.js?ver=1.0'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/swipebox-ios-orientationchange-fix.js?ver=1.0'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/jquery_swipebox_min_load.js?ver=1.0'></script> <script type='text/javascript' src='https://3ddroid.ru/wp-content/themes/blueblog/js/jquery.lazy.min.js?ver=0.1.6'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.8.4'></script> </body> </html>