Toon posts:

[JS/DHTML] document.write herschrijft document!?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een scriptje geschreven waarin ik menu objecten kan aanmaken; via een prototype kan ik vervolgens zo'n menu-object weergeven. In een menu object kan een ander menu object nesten, maar hier gaat het ergens fout...

Zogauw ik mijn 1e menu op mijn scherm heb staan en ik wil een menu dat hierin genest zit weergeven via het prototype dat ik hiervoor gemaakt heb, wist IE mijn document inhoud en herschrijft dit met de code die het prototype uit spuugt.

Ik gebruik in het prototype alleen document.write's die divs schrijft met daar aan de gewenste eigenschappen...

Wat kan de oorzaak zijn? :?

  • Croccifixio
  • Registratie: Maart 2002
  • Laatst online: 01-04-2025
Mijn DHTML skills zijn een beetje roestig, maar kan je niet beter gebruik maken van innerHTML om de inhoud van de DIV's met menu's te veranderen?
write(), writeln()

When invoked as the page loads, these methods can dynamically add content to the page. When invoked after the page has loaded, a single method invocation clears the current document, opens a new output stream, and writes the content to the window or frame.

Verwijderd

Topicstarter
Croccifixio schreef op 31 May 2003 @ 08:57:
Mijn DHTML skills zijn een beetje roestig, maar kan je niet beter gebruik maken van innerHTML om de inhoud van de DIV's met menu's te veranderen?
[...]
Om wat minder typwerk te hebben, had ik fijn een functie gemaakt die een document.write uitvoerde; deze heb ik nu vervangen voor een functie die code aan de innerHTML van een div toevoegt.. Resultaat is een wit-scherm met zo'n fijn geel "ik verrekhet" icoontje onder in de statusbar :'(

Is er geen manier om het active document te heropenen, zodat hij hem niet meer overschrijft maar gewoon braaf de code er onder aan toevoegt?

  • Croccifixio
  • Registratie: Maart 2002
  • Laatst online: 01-04-2025
Verwijderd schreef op 31 May 2003 @ 09:06:
[...]


Om wat minder typwerk te hebben, had ik fijn een functie gemaakt die een document.write uitvoerde; deze heb ik nu vervangen voor een functie die code aan de innerHTML van een div toevoegt.. Resultaat is een wit-scherm met zo'n fijn geel "ik verrekhet" icoontje onder in de statusbar :'(

Is er geen manier om het active document te heropenen, zodat hij hem niet meer overschrijft maar gewoon braaf de code er onder aan toevoegt?
Dat is denk ik niet mogelijk.

Je zal nog eff een paar uurtjes moeten wachten tot de DHTML guru's wakker worden. ;)

Wat natuurlijk ook kan, is dat je de menu's statisch definieert in DIV's, deze positioneert en op 'visible=false' zet. Vervolgens kan je de DIV's weer 'visible' maken op het moment dat het nodig is.

Verwijderd

Topicstarter
Croccifixio schreef op 31 May 2003 @ 09:11:
[...]


Dat is denk ik niet mogelijk.

Je zal nog eff een paar uurtjes moeten wachten tot de DHTML guru's wakker worden. ;)

Wat natuurlijk ook kan, is dat je de menu's statisch definieert in DIV's, deze positioneert en op 'visible=false' zet. Vervolgens kan je de DIV's weer 'visible' maken op het moment dat het nodig is.
Het probleem is dat een user straks ook real-time nieuwe menu's moet kunnen aanmaken, als onderdeel van een ontwikkeling-omgeving waarin je dus het een en ander remote moet kunnen bouwen..

  • Croccifixio
  • Registratie: Maart 2002
  • Laatst online: 01-04-2025
Verwijderd schreef op 31 May 2003 @ 09:16:
[...]


Het probleem is dat een user straks ook real-time nieuwe menu's moet kunnen aanmaken, als onderdeel van een ontwikkeling-omgeving waarin je dus het een en ander remote moet kunnen bouwen..
OK, heb je misschien nog wat meer achtergrondinfo, om het plaatje compleet te maken? Misschien een deel van je source om naar te kijken?

edit:
Als er straks dynamisch menu's toegevoegd moeten kunnen worden, zit ik aan het volgende 'stappenplan' te denken:

Gebruiker kiest 'Nieuw menu'
Dialoog komt tevoorschijn waarin voorkeuren voor het nieuwe menu ingesteld kunnen worden.
Op 'OK' wordt er een nieuwe DIV gemaakt. (alleen de source voor deze DIV)
Lees de complete source van het huidige document.
Voeg hier de code voor de nieuwe DIV aan toe.
Doe een volledige write op het document.

En nu ga ik trainen ;).

[ Voor 44% gewijzigd door Croccifixio op 31-05-2003 09:24 ]


Verwijderd

Topicstarter
Ik heb nog even geprobeerd met een innerHTML te werken; als ik NA dat het document volledig is ingeladen met innerHTML in een div probeer het menu op te bouwen, dan dumpt hij vrijwel alleen maar rauwe code op het scherm en verrekt het om het uit te voeren..

Het menu is vrij simpel; hij maakt een Div voor de buitenkant van het menu, die dan tevens meteen kan worden gebruikt om het menu mee te herpositioneren, verbergen enz.
daarna zet hij voor alle items steeds 3 divs op een regel naast elkaar voor icon, caption en eventueel pijltje als er submenu's aan hangen; daar overheen zet hij een div die oplicht als je er met je muis overheen gaat ...

Elk menuitem heeft dus 4 div's; zodat straks gemakkelijk te swappen is van stijl..

  • Croccifixio
  • Registratie: Maart 2002
  • Laatst online: 01-04-2025
Verwijderd schreef op 31 May 2003 @ 09:31:
Ik heb nog even geprobeerd met een innerHTML te werken; als ik NA dat het document volledig is ingeladen met innerHTML in een div probeer het menu op te bouwen, dan dumpt hij vrijwel alleen maar rauwe code op het scherm en verrekt het om het uit te voeren..
Zou je de source van dat innerHTML stukje even kunnen laten zien?

Iets meer info over innerHTML:
innerHTML

The rendered text and HTML tages (i.e., all source code) between the start and end tags of the current element. If you want only the rendered text, see innerText. For the source code that includes the element's tags, see outerHTML. A change to this property that includes HTML tags is rendered through the HTML parser, as if the new value were part of the original source code. You may change this property only after the document has fully loaded. Changes to the innerHTML property are not reflected in the source code when you view the source in the browser.
Het menu is vrij simpel; hij maakt een Div voor de buitenkant van het menu, die dan tevens meteen kan worden gebruikt om het menu mee te herpositioneren, verbergen enz.
daarna zet hij voor alle items steeds 3 divs op een regel naast elkaar voor icon, caption en eventueel pijltje als er submenu's aan hangen; daar overheen zet hij een div die oplicht als je er met je muis overheen gaat ...

Elk menuitem heeft dus 4 div's; zodat straks gemakkelijk te swappen is van stijl..
OK, duidelijk.

[ Voor 6% gewijzigd door Croccifixio op 31-05-2003 13:06 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Je zult met DOM methoden moeten werken om elementen aan de pagina toe te kunnen voegen.
Voorbeeldje:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function create_menu() {

  var newmenu = document.createElement('div');
  newmenu.style.position = 'absolute';
  newmenu.style.left = '10px';
  newmenu.style.top = '10px';
  newmenu.style.width = '100px';
  newmenu.style.height = '100px';
  newmenu.innerHTML = '<b>een nieuwe div</b>';
  document.body.appendChild(newmenu);

}

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 31 May 2003 @ 13:10:
Je zult met DOM methoden moeten werken om elementen aan de pagina toe te kunnen voegen.
Voorbeeldje:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function create_menu() {

  var newmenu = document.createElement('div');
  newmenu.style.position = 'absolute';
  newmenu.style.left = '10px';
  newmenu.style.top = '10px';
  newmenu.style.width = '100px';
  newmenu.style.height = '100px';
  newmenu.innerHTML = '<b>een nieuwe div</b>';
  document.body.appendChild(newmenu);

}
*lol* Laat dat nou bijna de zelfde code zijn als waar ik nu uiteindelijk op uit ben gekomen! :D her en der staat er nog wel wat extra's bij, maar het komt bijna overeen :D Stom dat ik niet ff eerder heb terug gechecked, dat had mij een hoop moeite bespaart!

Maar in ieder geval bedankt!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 31 May 2003 @ 17:50:
[...]


*lol* Laat dat nou bijna de zelfde code zijn als waar ik nu uiteindelijk op uit ben gekomen! :D her en der staat er nog wel wat extra's bij, maar het komt bijna overeen :D Stom dat ik niet ff eerder heb terug gechecked, dat had mij een hoop moeite bespaart!

Maar in ieder geval bedankt!
sorry, ik was niet eerder wakker ;)

Intentionally left blank

Pagina: 1