Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

cum inversez continutul a 2 div-uri?
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> HTML/JavaScript/CSS
Subiectul anterior :: Subiectul următor  
Autor Mesaj
cristiluc



Data înscrierii: 25/Iun/2008
Mesaje: 18

Trimis: Sâm Aug 16, 2008 11:26 am    Titlul subiectului: cum inversez continutul a 2 div-uri?  

salut
am 2 div-uri in care se afla cate un obiect reprezentand un gadget care va fi introdus in pagina. as vrea sa pot inversa pozitiile celor 2 gadget-uri insa prin simpla inlocuire a campurilor innerHTML se pierd observerii si am citit ca nu e recomandat asa ceva. am incercat sa modific campurile firstChild, dar nu imi este permis. cum as putea proceda?
va multumesc pt ajutor
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3001
Locație: țopăi pe tasta DELETE

Trimis: Sâm Aug 16, 2008 3:21 pm    Titlul subiectului:  

Citat: insa prin simpla inlocuire a campurilor innerHTML se pierd observerii si am citit ca nu e recomandat asa ceva.

nu stiu ce e cuvantul ala dar... poti sa folosesti cu succes innerHTML, cu o variabila temporara

variabila1 = div1.innerHTML
div2.innerHTML = div1.innerHTML
div2.innerHTML = variabila1

si, cam asta e
Sus  
adix



Data înscrierii: 02/Oct/2007
Mesaje: 123

Trimis: Sâm Aug 16, 2008 3:37 pm    Titlul subiectului:  

vectorialpx a scris: Citat: insa prin simpla inlocuire a campurilor innerHTML se pierd observerii si am citit ca nu e recomandat asa ceva.

nu stiu ce e cuvantul ala dar... poti sa folosesti cu succes innerHTML, cu o variabila temporara

variabila1 = div1.innerHTML
div2.innerHTML = div1.innerHTML
div2.innerHTML = variabila1

si, cam asta e

Observerii aia sunt de fapt evenimentele atasate.

ar trebui sa aibe o structura de felul asta sa mearga

Cod: <div class="parent1">
  <div id="child1">Continut div 1</div>
</div>

<div class="parent2">
  <div id="child2">Continut div 2</div>
</div>

Apoi, vei avea un script de genul asta:

Cod: <script type="text/javascript">
  var child1 = $('child1');
  var child2 = $('child2');

  var parent1 = child1.parentNode;
  var parent2 = child2.parentNode;

  paren1.removeChild(child1);
  paren2.removeChild(child2);

  parent1.appendChild(child2);
  parent2.appendChild(child1);
</script>

Ma rog, asta e ideea, scriu aici fara sa testez, dar asta e principiul.
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3001
Locație: țopăi pe tasta DELETE

Trimis: Sâm Aug 16, 2008 3:58 pm    Titlul subiectului:  

Citat: Observerii aia sunt de fapt evenimentele atasate.
aham... nu stiam ca se pierd evenimente cu innerHTML. Nu stiu daca jquery are vr-o solutie pentru asta sau html() e doar o prescurtate a lui innerHTML. [oricum, am nota 5 la javascript]
Sus  
adix



Data înscrierii: 02/Oct/2007
Mesaje: 123

Trimis: Dum Aug 17, 2008 12:11 pm    Titlul subiectului:  

vectorialpx a scris: Citat: Observerii aia sunt de fapt evenimentele atasate.
aham... nu stiam ca se pierd evenimente cu innerHTML. Nu stiu daca jquery are vr-o solutie pentru asta sau html() e doar o prescurtate a lui innerHTML. [oricum, am nota 5 la javascript]

innerHTML copie doar codul html dintr-un tag in altul, practic textul pe care il scrii tu intre doua taguri, cu tot cu tagurile copii. Evenimentele le copioe doar daca sunt declarate inline, altfel nu are cum sa stie de ele.
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1762
Locație: Sibiu

Trimis: Dum Aug 17, 2008 4:21 pm    Titlul subiectului:  

adix, oare cu outerHTML ar merge? Teoretic ar trebui sa copieze si evenimentele atasate, daca nu sunt declarate via JS.
Sus  
hunt_h_er



Data înscrierii: 14/Sep/2006
Mesaje: 95

Trimis: Dum Aug 17, 2008 6:38 pm    Titlul subiectului:  

Daca vrei sa schimbi pozitiile la nivel de prezentare (css) poti sa schimbi (add, remove) clasele parintilor..

Altfel, daca nu poti face asta, depinde ce ai tu pe acolo..
Sus  
adix



Data înscrierii: 02/Oct/2007
Mesaje: 123

Trimis: Lun Aug 18, 2008 9:29 am    Titlul subiectului:  

mihaitha a scris: adix, oare cu outerHTML ar merge? Teoretic ar trebui sa copieze si evenimentele atasate, daca nu sunt declarate via JS.

Nu, e similar cu innerHTML.

Ambele fac referinta doar la text, nu tin cont de altceva.

Dar intrebarea de mai sus este foarte buna, la ce ai nevoie de asta, sigur exista o solutie mai buna.
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 632
Locație: Drobeta Turnu Severin

Trimis: Lun Aug 18, 2008 3:22 pm    Titlul subiectului:  

Nu stiu de ce nu reusesti, iata :
Cod:
<html>
<head>
<style type="text/css">
.parent1 { background-color: #ffff00;}
.parent2 { background-color: #00ffff; }
</style>

<script type="text/javascript">
function changepos(id1, id2)
{
   var child1 = document.getElementById(id1);
   var child2 = document.getElementById(id2);
   var parent1 = child1.parentNode;
   var parent2 = child2.parentNode;
   parent1.appendChild(child2);
   parent2.appendChild(child1);
   parent1.removeChild(child1);
   parent2.removeChild(child2);
}

function click1() { alert('CHILD 1'); }
function click2() {   alert('CHILD 2'); }

</script>
</head>

<body>
 <div class="parent1">
  <div id="child1">
     <br />Continut div 1 (click)<br />&nbsp;
  </div>
</div>

<div class="parent2">
  <div id="child2">
     <br />Continut div 2 (click)<br />&nbsp;
  </div>
</div>

<input type="button" name="change" value="Change" onclick="changepos('child1','child2');" />

<script type="text/javascript">
// se "ataseaza" cate un eveniment fiecarui div
document.getElementById('child1').addEventListener('click',click1,false);
document.getElementById('child2').addEventListener('click',click2,false);
</script>
</body>
</html>

Dupa "Change" div-urile isi schimba pozitia, CSS-ul ramane neschimbat fiind al parintilor.
Evenimentele atasate se pastreaza pentru fiecare copil.
Cred ca merge sa schimbi si CSS-ul parintilor dar nu despre asta era vorba.
Eu am incercat pe FireFox.
Sus  
cristiluc



Data înscrierii: 25/Iun/2008
Mesaje: 18

Trimis: Lun Aug 18, 2008 7:34 pm    Titlul subiectului:  

va multumesc tuturor pt solutii, pana la urma am reusit cu remove urmat de update. s-au pastrat evenimentele si merge si pe IE
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> HTML/JavaScript/CSS
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community