将类应用于DOM中的父元素?

时间:2011-03-24 19:10:41

标签: php domdocument classname

        <li id="weather" class="widget-container widget-dark-blue">
            <h3 class="widget-title">Weather</h3>
            <?php include (TEMPLATEPATH . '/widgets/weather.php'); ?>
        </li>

weather.php对气象服务进行卷曲请求并返回一张表。使用DomDocument类,我读取td's内的值。我正在将当前天气状况的类名应用于div.weather

<?php

require_once('classes/SmartDOMDocument.class.php');

$url = 'some/domain...';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);

$str = curl_exec($curl);

$dom = new SmartDOMDocument();
$dom->loadHTML($str);
$xpath = new DOMXPath($dom);

$tds = $xpath->query('//div/table/tr/td');

foreach ($tds as $key => $cell) {
    if ($key==1) {
        $condition = $cell->textContent;
        //$cell->parentNode->setAttribute('class', 'hello');
        echo "<div class='weather " . strtolower($condition) ."'>";
        ...

&GT;

一切正常。我唯一的问题是,是否有一种PHP方法将classname $条件应用于保存信息的list-item? 因此,我不想在我的李天气里面有一个带有$ condtion的课程。我希望让李#在这个课程中适应。

<li id="weather" class="widget-container widget-dark-blue $condition">

有没有办法可以将$ condition类应用到保存所有内容的列表中。我可以使用javascript / jquery轻松完成。但是我想知道是否有一些服务器端解决方案。

谢谢

1 个答案:

答案 0 :(得分:2)

也许你可以尝试类似的东西:

$parent = $cell->parentNode;

while ($parent->tagName != 'li')
{
    $parent = $parent->parentNode;
}

$class = $parent->getAttribute('class');
$parent->setAttribute('class', $class . ' ' . strtolower($condition));