SORU
29 Ocak 2010, Cuma


Nasıl örnek Javascript herhangi bir çocuk olup olmadığını kontrol edin.

Basit bir soru, elementByİd üzerinden kapma olduğum bir eleman var(). Nasıl eğer çocuğunuz varsa kontrol edebilirim?

CEVAP
29 Ocak 2010, Cuma


Birkaç yol:

if (element.firstChild) {
    // It has at least one
}

ya hasChildNodes() fonksiyon:

if (element.hasChildNodes()) {
    // It has at least one
}

veya childNodes length özelliği:

if (element.childNodes.length > 0) { // Or just `if (element.childNodes.length)`
    // It has at least one
}

Sadece çocuk hakkında bilmek istiyorsanelemanları(metin düğümleri, öznitelik düğümleri aksine, vb.), bu hedef tarayıcıları, üzerinde çalışabilir(Florian! teşekkür ederim):

if (element.children.length > 0) { // Or just `if (element.children.length)`
    // It has at least one element as a child
}

...amabuDOM1, DOM2, tanımlanmış olan children property dayanmaktadıryaDOM3. Ancak, Chrome, Firefox, Opera, IE6 ve 9 (ve muhtemelen aradaki sürümlerde) ve geçerli (Bu yazı gibi, Kasım 2012) sürümlerinde çalışır.

Eğer bir şey DOM1 tanımlı (belki de gerçekten karanlık tarayıcılar desteği var) kalmak istiyorsan, daha fazla iş yapmak zorunda:

var hasChildElements, child;
hasChildElements = false;
for (child = element.firstChild;
     child;
     child = child.nextSibling
    ) {

    if (child.nodeType == 1) { // 1 == Element
        hasChildElements = true;
        break;
    }
}

Bütün bunlar DOM1 ve neredeyse evrensel olarak desteklenen bir parçasıdır.

Örneğin bir fonksiyon içinde bu işi yapmak daha kolay olurdu:

function hasChildElement(elm)
{
    var rv, child;

    if (elm.children)
    {
        // Supports `children`
        rv = elm.children.length !== 0;
    }
    else
    {
        // The hard way...
        rv = false;
        for (child = element.firstChild;
             child;
             child = child.nextSibling
            ) {

            if (child.nodeType == 1) { // 1 == Element
                rv = true;
                break;
            }
        }
    }
    return rv;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BSA

    BSA

    9 NİSAN 2012
  • Mindy

    Mindy

    20 NİSAN 2006
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011