Autor Zpráva
spacer
Profil *
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
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 *
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 *
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 *
jj tiez som si myslel ze vlastnosti objektu budu po zruseni nedostupne ale napriek tomu to hraje :)
spacer
Profil *
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 *
> 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 *
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 *
> newSpan.value = "text vlozeneho spanu";
newSpan.appendChild(document.createTextNode("text vlozeneho spanu"));
spacer
Profil *
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0