ugrás a tartalomhoz

innerHTML

whiteman0524 · 2009. Okt. 29. (Cs), 15.21
Sziasztok !

Meggyűlt a bajom az innerHTML -el...

Kezdem az elején. Szóval a lényeg az, hogy input adatokat tárolok el adatbázisban, és onnan majd meg is jelenítem őket, ezért a speciális karaktereket megpróbáltam kivédeni. Írtam egy saját függvényt ami lecseréli a következő karakterket : &, ", ', <, >, \. A htmlspecialchars azért nem volt jó nekem, mert abban nincs benne a \ helyettesítése illetve levédése. Tudom hogy ott van erre a célra az addslashes() de minek két külön függvényt használni, sokkal egyszerűbb csak egyet :) Szóval az adatok kódolva tárolódnak el, és táblázatszerűen jelenítem meg őket.

Most jön a JavaScript rész. Van egy olyan funkcióm hogy "módosítás". Ez annyit csinál, hogy az egyes celláknak a tartalmát kimenti egy változóba (valtozo = cella.innerHTML) majd kicseréli egy szövegmezőre benne a kimentett tartalommal (cella.innerHTML = <input type='text' value='valtozo' />). És innentől lehet szerkeszteni. A probléma ott lép fel, hogy a "speciális" karakterek idő közben valahol "elvesznek". Tegyük fel, hogy az egyik inputom az 'akarmi' - kifejezés volt. Ez a szerverre küldés után átkódolódik a következőre : &#039;akarmi&#039; Viszont ! mikor az esetleges módosításra kerül sor, akkor a cella.innerHTML csak annyit ad vissza hogy akarmi, az 'akarmi' - helyett. És nem értem hogy miért ?

Ha valakinek esetleg van ötlete szivesen várom :)
 
1

Bocsánnat...

whiteman0524 · 2009. Okt. 29. (Cs), 15.32
kicsit módosítanék... a példában szereplő &#039;akarmi&#039; - helyett pontosabban SEMMI se jelenik meg, ha lekérdezem a cella.innerHTML -el a tartalmat ! Tehát üres sztringet kapok ! Miért ????? ÉS hogyan kaphatnám vissza az eredeti tartalmát ? :)
2

# ezt cseréld át valamire,

mgergo90 · 2009. Okt. 29. (Cs), 16.46
# ezt cseréld át valamire, mert ezt nem küldi el valamiért.
3

Megoldódott a dolog.....

whiteman0524 · 2009. Okt. 29. (Cs), 20.14
Hát ebből most levontam a tanulságot...NE használjátok az innerHTML-t. Egyrészt mert nem szabványos, másrészt mert néha marhaságokat ad vissza, mint itt nálam is például. Kiderült hogy inkább csomópontokkal kell dolgozni, meg nodeValue-kkal egyszóval objektumokkal és az attribútumaikkal. Ha így teszünk, akkor nem lesz baj :)