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

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • ELawshea

    ELawshea

    26 Mayıs 2008
  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009