Mevcut düğüm ebeveynin düğümün son çocuk olup olmadığını anlamaya nasıl

2 Cevap php

I'm trying to figure out how to know if a node is the last child of another, or not. I know how to retrieve the parent's lastChild name ($node->parentNode->lastChild->nodeName), but as sometimes there's many same node names within the same parent, the name is definitly not the way to find the last child.

Ben oğul sayısını alabilirsiniz yineleyici çeşit arıyor ve geçerli düğüm son çocuk ise geçerli düğümün konumuna bağlı olarak, söyle ediyorum.

Teşekkürler!

2 Cevap

Saf DOM açısından, çocuk ebeveynin son çocuk ise, onun nextSibling property will be null.

(Özellikle Javascript arıyorsanız değil) javascript örnek:

if (!child.nextSibling) {
    // It's the last child
}

O nextSibling traversini dikkat etmek önemlidir nodes. Bazen (düğümleri ve bu metne karşı gibi) yerine elements çapraz istiyorum. Örneğin, bu biçimlendirme:

<p>Testing <span>one</span> two three</p>

... span (bir metin düğümü izledi çünkü) kabında son düğümü değil, ama son element kabında değildir. Bunu aramak istiyorsanız, nodeType, örneğin kontrol bir döngü gerekir:

// =====
// Note: This example is in JavaScript, but I assume it's easy enough
// to follow what it's doing and translate it to PHP
// =====

// Utility function
function nextElement(node) {
    var rv = node.nextSibling;
    while (rv && rv.nodeType !== 1) {
        rv = rv.nextSibling;
    }
    return rv;
}

// Usage
if (!nextElement(child)) {
    // There was no element after `child`
}

Bu bir PHP soru beri, ben kuşaklar için (DOM kullanarak) bir PHP cevap bırakacağım:

if ($node->isSameNode($node->parentNode->lastChild))
{
    //...
}

Eğer SimpleXML kullanıyorsanız ve sadece dom_import_simplexml() ile düğüm dönüştürebilirsiniz.