Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP, DOM, replaceChild: Not Found Error

Teuro [17.08.2008 11:52:50]

#

Mikäs kumma tässä nyt oikein mättää. Tulkki heittää herjan Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error'DOMNode->replaceChild(Object(DOMElement), Object(DOMElement)) #1 {main} thrown. Herja tulee muokkaa.php:n riviltä 34, jolla lukee seuraavaa.

PHP:n versio on 5.2.6
palvelinsoftana on apache 2.2

<?php
$oma -> replaceChild($uusiSolmu, $haettuSolmu);
?>

Kokonaisuudessaan tämä tekstin vaihtaminen yritetään tehdä seuraavalla koodin pätkällä, mikäli tästä on yhtään apua.

<?php
$filu = siivoaSyote($_POST['filu']);	//../esimerkki/yhdistys.php
$kpl = siivoaSyote($_POST['kpl']);		// 1
$mika = siivoaSyote($_POST['mika']);	// p
$asia = siivoaSyote($_POST['asia']);

$oma = new DomDocument();
$oma -> loadHTMLfile($filu);
$haettuSolmu = $oma -> getElementsByTagName($mika) -> item($kpl);

//echo $haettuSolmu -> textContent; //Tämä tulostuus oikein!

//Ovatko seuraavat 3 riviä oikein / järkeviä?
$uusiSolmu = $oma -> createElement($mika);
$uusiTeksti = $oma -> createTextNode($asia);
$uusiSolmu -> appendChild($uusiTeksti);

$oma -> replaceChild($uusiSolmu, $haettuSolmu); //Tässä tuskin on ongelmaa!

$oma -> saveHTMLfile($filu);
}
?>

Puuttuuko jotain oleellista tietoa?

Metabolix [17.08.2008 12:12:56]

#

Tietääkseni nämä funktiot vaativat aina juuri ylemmän solmun, eivät dokumenttia.

// (JavaScript) Ei näin:
document.removeChild(a);
// Kyllä näin:
a.parentNode.removeChild(a);

Ehkäpä tuossakin aivan samalla periaatteella pitäisi ensin hakea se vanhan solmun vanhempi ja käyttää sitä dokumentin sijaan.

Teuro [18.08.2008 15:35:40]

#

Aah sain toimimaan kotipalvelimellani, mutta sivusto jolle tuota tarvitsen on kieltänyt saveHTMLfile funktion käytön. Kiitos kuitenkin sinulle metabolix.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta