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

  • Bart Baker

    Bart Baker

    1 Aralık 2006
  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006
  • Random Act of Kindness Video Contest

    Random Act o

    18 EYLÜL 2012