Ga naar inhoud

Ongewild nieuw venster bij onClick in Javascript


Aanbevolen berichten

Ben wat vingeroefeningen aan het doen in Javascript, en stuit daarbij op het volgende probleem: Een html-pagina met een paar aanklikbare links die een aantal Javascriptfuncties activeren. Met buttons werkt het idem dito. Loopt op zich helemaal naar verwachting, alleen één klein probleempje, de pagina opent bij het "onClick" in een nieuw venster. Het gevolg is dat alleen de door die scriptfuncties opgeroepen acties (writeln("nnnn") etc. in dat venster verschijnen, en de andere delen van de html-pagina niet, en dus ook niet de buttons of de links in de oorspronkelijke pagina. Zeker met een knop "Opnieuw" is dit natuurlijk wel gewenst, want nu kan dat "Opnieuw" maar éénmaal. Ongetwijfeld zal iemand dit ook wel eens zijn tegengekomen, en wellicht staat de oplossing ook wel in de boeken, maar ik kan het niet vinden. Iemand een idee? Jan de Boer
Link naar reactie
Je probleem is me niet helemaal duidelijk. Wil je niet dat er een nieuw venster geopend wordt? Of is er een ander probleem, en zo ja wat wil je dan precies bereiken? Daarnaast zou het wel handig zijn als je wat relevante code laat zien van wat je hebt. Zonder wordt het een beetje lastig om te bepalen wat er mis gaat.
Link naar reactie
[quote:bbd9f5591c="Annie"]Je probleem is me niet helemaal duidelijk. Wil je niet dat er een nieuw venster geopend wordt? Of is er een ander probleem, en zo ja wat wil je dan precies bereiken? Daarnaast zou het wel handig zijn als je wat relevante code laat zien van wat je hebt. Zonder wordt het een beetje lastig om te bepalen wat er mis gaat.[/quote:bbd9f5591c]Ik wil inderdaad dat er niet een nieuw venster wordt geopend. Het gaat om een al wat eerder gemaakt Jafascript in een html-pagina. In dat Jafascript worden berekeningen uitgevoerd, en de parameters ervoor worden met een prompt ingevoerd. Loopt verder geheel naar verwachting. Met simpel F5 wordt de procedure herhaald. Maar dat laatste wil ik gewoon wat verfraaien. Het gaat om een kalender ( overigens niet relevant). Onderaan de html-pagina staan daartoe drie links die verwijzen naar drie functies binnen dat Jafascript, tw.: "Opnieuw" (zou equivalent moeten zijn aan F5), "Vorige" en "Volgende". [code:1:bbd9f5591c]<center> <A HREF="javascript:vorige()">Vorige maand</A>&nbsp;&nbsp;<A HREF="javascript:opnieuw()">Opnieuw</A>&nbsp;&nbsp;<A HREF="javascript:volgende()">Volgende maand</A></center>[/code:1:bbd9f5591c] De Jafascript functies waarheen wordt verwezen zijn:[code:1:bbd9f5591c]function opnieuw() { for (i=1; i <= 42; i++) {dw[i]= " "; Fe$[i] = " "}; invoer(); start(); display()}; function volgende() { for (i=1; i <= 42; i++) {dw[i]= " ";Fe$[i] = " "}; M=M+1; if (M>12) {J=J+1; M=1}; start(); display()}; function vorige() { for (i=1; i <= 42; i++) {dw[i]= " ";Fe$[i] = " "}; M=M-1; if (M==0) {J=J-1; M=12}; start(); display()}; [/code:1:bbd9f5591c]Werkt vlekkeloos, maar helaas maar één keer, want zoals ik schreef verschijnt het nieuwe resultaat niet in de oorspronkelijke html-pagina, maar in een nieuw venster, dus zonder die html-links en natuurlijk ook zonder verdere opmaak die eventueel op die html-pagina staat. Enkel het resultaat van dat Javascript wordt nu getoond, in een verder leeg venster. Geen probleem om wakker van te liggen, maar het intrigeert me. Jan de Boer
Link naar reactie
Inderdaad een typefoute, elders staat wel javascript, evenals in de titel. Kan gebeuren. Ik heb het niet on-line staan. Maar dat lijkt me ook niet nodig. Zelfs met een heel simpel script treedt dit verschijnsel al op:[code:1:7465deb2a6] <html> <head> <body> <SCRIPT LANGUAGE="JavaScript"> document.bgColor = "yellow"; function execute() { document.writeln("<PRE>Dit script dient alleen voor demonstratie van het probleem\n\n"); } execute(); function opnieuw() { execute(); document.writeln("Er wordt nu door deze functie een tekstregel toegevoegd,\nmaar zoals je ziet is de oorspronkelijke html-opmaak verdwenen.") ;} </script> <center> <A HREF="javascript:opnieuw()">Opnieuw</A></center> </body> </html> [/code:1:7465deb2a6] Moeizaam door het hele script van me grasduinen is dus niet nodig, dit simpele voorbeeld wat ik even heb gemaakt demonstreert precies wat er aan de hand is. Is dus iets heel fundamenteels, en er moet een oplossing voor zijn dacht ik. Jan de Boer
Link naar reactie
Er wordt geen nieuwe pagina geopend, de bestaande pagina wordt overschreven. Dat komt omdat je document.write gebruikt. Document.write is eigenlijk alleen handig als je het laat uitvoeren op het moment dat het document wordt ingeladen. Als je het daarna gebruikt wordt alle oorspronkelijke content gewist. Wat jij eigenlijk zou doen is met dom-methodes werken (of .innerHTML die virtueel in elke browser werkt). Deze overschijven niet de bestaande content. Hier staan er wel een heleboel vermeld: http://www.quirksmode.org/index.html?/dom/w3c_core.html
Link naar reactie
[color=blue:707a9dee08]/edit: arrgh, te laat. Dat krijg je als je werk en forummen combineert [/color:707a9dee08];) Ah, oke, het kwartje valt. Met een "nieuw venster" bedoel je dat het bestaande document opnieuw wordt samengesteld en niet dat er een nieuw browservenster wordt geopend. En dat wordt veroorzaakt doordat je met [i:707a9dee08]document.write(ln) [/i:707a9dee08]werkt. Nadat een pagina (document) helemaal geparsed is door de browser kan je met document.write niets meer toevoegen aan de content. Je zal een andere methode moeten gaan gebruiken. Om de content binnen een element te wijzigen kan je de innerHTML property van dat element herschrijven (of gebruik [i:707a9dee08]'echte'[/i:707a9dee08] DOM methoden, maar dat is iets ingewikkelder). [code:1:707a9dee08] <script type="text/javascript"> function anderetekst(sElement) { var oElement = document.getElementById(sElement); oElement.innerHTML = 'en nu iets <strong>anders</strong>'; } </script> <a href='#' onclick="anderetekst('elementje');return false;">KLIK</a> <div id='elementje'>hier staat iets</div> [/code:1:707a9dee08]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...