Применять класс к родительскому элементу в DOM?
<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 Class я читаю значения внутри 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) ."'>";
...
?>
Все отлично работает Мой единственный вопрос: есть ли способ применения условия $ name к элементу списка, который содержит информацию, с помощью PHP? Поэтому вместо того, чтобы иметь класс с условием $ внутри моей погоды, я бы хотел, чтобы класс был в классе.
<li id="weather" class="widget-container widget-dark-blue $condition">
Есть ли способ, которым я могу применить класс $condition к списку, который содержит все. Я мог бы легко сделать это с помощью javascript/jquery. Однако мне интересно, есть ли какое-нибудь серверное решение.
благодарю вас
1 ответ
Может быть, вы могли бы попробовать что-то вроде:
$parent = $cell->parentNode;
while ($parent->tagName != 'li')
{
$parent = $parent->parentNode;
}
$class = $parent->getAttribute('class');
$parent->setAttribute('class', $class . ' ' . strtolower($condition));