Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie drzewa w DOM
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
ChanibaL
Mam jeden głupi problem. Nie mogę znaleść żadnej funkcji w javascript która pozwoliłaby na usunięcie kawałka drzewa DOM. Jest mi to potrzebne, ponieważ po zamyknięciu tego obrazka chciałbym użyć bigimg_obj do ponownego otwarcia innego. Gdy cały czas używam jednej zmiennej podmieniając tylko src to przeglądarki nie zachowują się ciekawie (zostaje stara zawartość obrazka, nowa często się nawet nie pokazuje, wysokość w IE często pada)

Odchudzony java script:
Kod
var bigimg_obj=false;

function bigimg_make() {
    bigimg_obj=document.createElement("img");
    bigimg_obj.onclick=bigimg_close;
    }

function bigimg_close() {
    document.body.removeChild(bigimg_obj);
    bigimg_obj.src="";
    delete(bigimg_obj.src);
    bigimg_obj.outerHTML="";
    alert(bigimg_obj); // dalej pokazuje że element istnieje
    }


Testowane IE6, FF1.0.
dr_bonzo
Alez ten dom fajny, a kiedys uzywalem tylko innerHTMLa smile.gif

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <head>
  5. <title>JS DOM test</title>
  6. <script type="text/javascript">//<![CDATA[
  7. var imageIsOpened = false;
  8.  
  9. function openImage( src )
  10. {
  11. if ( imageIsOpened )
  12. {
  13. return;
  14. }
  15.  
  16. var newImage = document.createElement( 'img' );
  17. newImage.setAttribute( 'src', src );
  18. newImage.setAttribute( 'src', src );
  19. newImage.setAttribute( 'alt', 'Wow, dziala, src = ' + src );
  20. newImage.addEventListener( 'click', closeImage, false );
  21. var pFI = getPlaceForImages();
  22. pFI.appendChild( newImage );
  23.  
  24. imageIsOpened = true;
  25. }
  26.  
  27. function getPlaceForImages()
  28. {
  29. return document.getElementById( 'placeForImages' );
  30. }
  31.  
  32. function closeImage()
  33. {
  34. this.parentNode.removeChild( this );
  35. imageIsOpened = false;
  36. }
  37. //]]>
  38. </script>
  39. </head>
  40. <body>
  41.  
  42. <div id="linki">
  43. <a href="javascript:openImage( '111.jpg' )">111</a>
  44. <a href="javascript:openImage( '222.jpg' )">222</a>
  45. <a href="javascript:openImage( '333.jpg' )">333</a>
  46. <a href="javascript:openImage( '444.jpg' )">444</a>
  47. </div>
  48. <div id="placeForImages"></div>
  49. </body>
  50. </html>


No i lipa, dziala tylko w Operze (8.0.1), w FFoxie (1.0.4) czasami nie dziala (kilkakrotnie klikne: otworze, zamkne -- ok, nastepnym razem obrazek sie nie pojawia), o IE juz nie spominam, ktore chyba o DOMie nie slyszalo.

O takie cos chodzilo?

Linki:
http://www.mozilla.org/docs/dom/domref/
revyag
Chyba można to prościej zrobić smile.gif
Kod
<script type="text/javascript">//<![CDATA[

function openImage( src )
{
    var pFI = getPlaceForImages();
    
    if(pFI.childNodes.length > 0)
    {
        pFI.removeChild( pFI.childNodes[0] );
    }
    
    var newImage = document.createElement( 'img' );
    newImage.setAttribute( 'src', src );
    newImage.setAttribute( 'alt', 'Wow, dziala, src = ' + src );
    
    pFI.appendChild( newImage );
}

function getPlaceForImages()
{
    return document.getElementById( 'placeForImages' );
}

//]]>
</script>
dr_bonzo
Chodzilo o to zeby wymieniac obrazki, a nie dodawac, po kliknieciu usunac, itd? No to troche przesadzilem smile.gif
ChanibaL
Ok, dzięki, już działa, myślałem co prawda nad takim rozwiązaniem, ale jakieś takie nieeleganckie się wydawało.

Inna sprawa, że to trochę dziwne, że nie można czegoś takiego usunąć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.