Autor Zpráva
m93a
Profil
Dobrý den, pracuji s DOM a narazil jsem na problém. Mám proměnnou $i typu integer a objekt $tbl typu DOMNodeList a potřebuju ve while zjistit postupně atribut class všech jeho členů. Problém ovšem nastane při použití funkce DOMElement::getAttribute().

Při tomto kódu funguje bez problémů a vypíše 'string(123) "název třídy"':
var_dump($tbl -> item($i) -> getAttribute('class'));

Tento kód vyhazuje "Call to a member function getAttribute() on a non-object":
$class = $tbl -> item($i) -> getAttribute('class');

Nevím, co stím (hlavně proto, že mezi uvedenými kódy nevidím téměř žádný rozdíl). Poraďte mi, prosím, jak se to dá opravit.
Dík, m93a.
ShiraNai7
Profil
$i musí být mimo rozsah.. pak item() nevrátí objekt.

Použij foreach.
foreach($tbl as $item) {
   $class = $item->getAttribute('class');
}

Pokud trváš na použití metody item(), tak takto:
for($i = 0; $i < $tbl->length; ++$i) {
    $class = $tbl->item($i)->getAttribute('class');
}
m93a
Profil
ShiraNai7:
Nevím, jestli to funguje, ale určitě je to o hooooooooooooooooooooooooodně pomalejší :D

EDIT: Jo funguje to, díky :D

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0