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

  • gamingbits

    gamingbits

    2 Mayıs 2006
  • pilslajt

    pilslajt

    20 HAZİRAN 2008
  • VideoGamePervert

    VideoGamePer

    30 AĞUSTOS 2008