2016-08-17 4 views
1

> LI> UL>李、変更クラス

私は すべて "LI" の要素にクラスを適用するにはどうすればよい
<ul> 
    <li>Mammals 
     <ul> 
      <li>Canine 
       <ul> 
        <li>Fox</li> 
        <li>Wolf</li> 
       </ul> 
      </li> 
      <li>Feline</li> 
     </ul> 
    </li> 
    <li>Fish</li> 
</ul> 

(再帰的に)対象要素の祖先ですか?私は持っています:

<?php 
$list = ob_get_clean(); 
$dom = new DOMDocument; 
$dom->loadHTML($list); 
$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('//li'); 
foreach ($nodes as $object) { 
    $parts = parse_url($object->nodeValue); 
    parse_str($parts['query'], $query); 
    if (true) { 
     //if certain requirements are met, modify the current object 
    } 
    //also modify all ancestor li elements 
    //$object-> ?? ->setAttribute('class', 'current'); 
} 
?> 

それぞれの先祖を検索する前にターゲットオブジェクトを特定しなければならない理由があります。私は関連性のためにこのコードを削除しました。

答えて

0

ワークアップ親ノードのチェーン、liノードであるものを変える:

簡潔で、完全に働いた
<?php 

$parentNode = $node->parentNode; // ul 

while ($parentNode = $parentNode->parentNode) { 
    if ($parentNode->nodeName == 'LI') { 
     $parentNode->setAttribute('class', 'current'); 
    } 
} 
+0

。ありがとう! – SiteCarpenter

関連する問題