Autor | Zpráva | ||
---|---|---|---|
spacer Profil * |
#1 · Zasláno: 5. 4. 2008, 21:09:11
Caute,
jedna tema sa tu venuje pridavaniu elementov pomocou JS, ja to tak trochu zovseobecnim. Ako z jedneho miesta dany element vytiahnut (cize vybrat, zrusit ho na danom mieste) a vlozit na miesto nove, cize napr. ako child niektoreho z dalsich elementov. Ja som skusal si aj vytvorit novy element, vlozit ho ako child pomocou funkcie appendChild(..) , ale zmenu som nevidel. Treba to nejak refreshovat, alebo preco sa to neaktualizovalo, ako napr. ked zmenim pomocou JS rozmer alebo pozicie nejakeho elementu (zmenu vidim hned). spacer |
||
Leo Profil |
#2 · Zasláno: 5. 4. 2008, 22:25:22
Zkuste sem dat (podstatny a minimalni) kod, ktery podle vas nebeha a napsat co ma presne delat, takhle je to hadani z kristalove koule. Leo
|
||
Pir8 Profil * |
#3 · Zasláno: 6. 4. 2008, 00:09:47
toto mi funguje len neviem ci je to cross-browser
function presun() { var objekt = document.getElementById("objekt"); //vyber objektu, ktory xces presunut objekt.parentNode.removeChild(objekt); //"zmazes" ho document.getElementById("novy_rodicovsky_objekt").appendChild(objekt); // znovu si ho naklonujes v novom_rodicovkskom_objekte } |
||
Hribik Profil * |
#4 · Zasláno: 6. 4. 2008, 09:25:34
Ak sa nemylim, tak premenna "objekt" obsahuje len odkaz na dany objekt. Takze ked ho zrusis, tak odkazuje na nic a ty ten objekt nemozes potom priradit niekam inam.
Nejako takto by to malo byt: function presun() { var objekt = document.getElementById("objekt"); //vyber objektu, ktory xces presunut var clone_objekt = objekt.cloneNode(true); objekt.parentNode.removeChild(objekt); //"zmazes" ho document.getElementById("novy_rodicovsky_objekt").appendChild(clone_ob jekt); // znovu si ho naklonujes v novom_rodicovkskom_objekte } |
||
Pir8 Profil * |
#5 · Zasláno: 6. 4. 2008, 11:23:38
jj tiez som si myslel ze vlastnosti objektu budu po zruseni nedostupne ale napriek tomu to hraje :)
|
||
spacer Profil * |
#6 · Zasláno: 6. 4. 2008, 11:46:21
Ok, to co ste uviedli funguje, diki za objasnenie.
Mam ale este problem s tym vytvaranim a vkladanim noveho elementu, tu je kus kodu. // JS <!-- function app() { var newDiv = document.createElement("div"); var newSpan = document.createElement("span"); newDiv.appendChild(newSpan); document.getElementById("div0").appendChild(s); alert(document.getElementById("div0").outerHTML); } //--> </script> //html <div id="div0"> <span>nejaky text</span> </div> Ked si vysledok zobrazim pomocou funkcie alert, vsetko vyzera tak ako ma byt, ale na obrazovke sa neukaze ziadna zmena, vsetko ostalo tak ako bolo pred volanim funkcie app(). |
||
los Profil * |
#7 · Zasláno: 6. 4. 2008, 12:09:27
> Takze ked ho zrusis, tak odkazuje na nic a ty ten objekt nemozes potom priradit niekam inam.
Objekt so svojimi vlastnosťami bude po jeho odstránení z rodičovského elementu stále dostupný, takže klonovanie je zbytočné. Metóda removeChild nezmaže samotný objekt, iba ho odstráni z kolekcie poduzlov daného elementu. > document.getElementById("div0").appendChild(s); A čo je v premennej s? > ale na obrazovke sa neukaze ziadna zmena A akú zmenu na obrazovke vlastne čakáš od vloženia divu, ktorý obsahuje len prázdny span? |
||
spacer Profil * |
#8 · Zasláno: 6. 4. 2008, 12:35:25
Chyba sa stala pri upravovani, malo to byt takto, sorry.
/ JS <!-- function app() { var newDiv = document.createElement("div"); var newSpan = document.createElement("span"); newSpan.value = "text vlozeneho spanu"; newDiv.appendChild(newSpan); document.getElementById("div0").appendChild(newDiv); alert(document.getElementById("div0").outerHTML); } //--> /html <div id="div0"> <span>nejaky text</span> </div> |
||
los Profil * |
#9 · Zasláno: 6. 4. 2008, 13:34:05
> newSpan.value = "text vlozeneho spanu";
newSpan.appendChild(document.createTextNode("text vlozeneho spanu")); |
||
spacer Profil * |
#10 · Zasláno: 6. 4. 2008, 14:29:58
Jo tak takto,
uz mi to je jasne. Dakujem. Inak bola to moja chyba. Nepozrel som sa na ten vypis outerHTML poriadne, tam sice bolo value nastavene, ale ako hodnota atributu value. Niekedy by som sa najradsej nakopal za taketo chyby. Este raz diki. |
||
Časová prodleva: 16 let
|
0