Toon posts:

[JS] html weergeven met doc.write, probleem met escaping *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit nu echt al veel te lang te zoeken hoe ik dit aan de praat moet krijgen. Het scriptje dat voor het scrollen zorgt werkt. Het probleem zit er hem in dat ik voor het verloop van de website mijn code laat weergeven door javascript en dit met behulp van de document.write( ) methode. Alles wordt goed weergegeven, het is de functie ervan die niet werkt. 'onmouseover' laat blijkbaar niets gebeuren.

Ik heb allerlei bronnen nagekeken om zeker te zijn van hoe ik speciale tekens moet escapen en dergelijke, maar ik krijg de fout er maar niet uit.

Alvast bedankt, Black Box

De tekst die moet weergegeven worden is de volgende:
HTML:
1
2
3
4
5
6
7
8
9
10
11
  <table>
    <tr>
      <td>
        <iframe name="scr1" id="scr1" src="hltxt.html" scrolling="no"></iframe>
      </td>
      <td style="vertical-align:bottom;padding-bottom:10px">
        <a href="javascript:;" onmouseover="mouseOver(-4)" onmouseout="mouseOut()"><img src="images/up.jpg" alt="Scroll naar boven" /></a> 
        <a href="javascript:;" onmouseover="mouseOver(4)" onmouseout="mouseOut()"><img src="images/down.jpg" alt="Scroll naar beneden" /></a>
      </td>
    </tr>
  </table>


Dit probeer ik op volgende manier:
JavaScript:
1
2
3
4
5
6
document.write("<table><tr><td>")
document.write("<iframe name=\"scr1\" id=\"scr1\" src=\"hltxt.html\" scrolling=\"no\"><\/iframe>")
document.write("<\/td><td style=\"vertical-align:bottom;padding-bottom:10px\">")
document.write("<a href=\"javascript:;\" onmouseover=" + mouseOver(-4) + "\" onmouseout=" + mouseOut() + "\"><img src=\"images/up.jpg\" alt=\"Scroll naar boven\" /><\/a>")
document.write("<a href=\"javascript:;\" onmouseover=" + mouseOver(4) + "\" onmouseout=" + mouseOut() + "\"><img src=\"images/down.jpg\" alt=\"Scroll naar beneden\" /><\/a>")
document.write("<\/td><\/tr><\/table>")


Voor de volledigheid hier het scriptje:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  <script type="text/javascript">
    var timer_id;
    function scroll_iframe(frm,inc,dir) {
      if (timer_id) clearTimeout(timer_id);
      if (window.frames[frm]) {
        if (dir == "v") window.frames[frm].scrollBy(0, inc);
        else window.frames[frm].scrollBy(inc, 0);
        timer_id = setTimeout("scroll_iframe('" + frm + "'," + inc + ",'" + dir + "')", 20);
      }
    }

    function stopScroll() { if (timer_id) clearTimeout(timer_id); }

    function mouseOver(value) {
      scroll_iframe('scr1', value, 'v')
      window.status="Beweeg de muis over de pijl om te scrollen."
      return true
    }

    function mouseOut() {
      stopScroll()
      window.status=""
      return true
    }
  </script>

  • Upsal
  • Registratie: Mei 2005
  • Laatst online: 27-08-2024
Wat je in werkelijkheid doet is de return waarde van de aanroep 'mouseOver(-4)' schrijven in het htmlblok op de eigenschap 'onmouseover'. Ik denk dat je zoiets bedoeld:

JavaScript:
1
document.write("<a href=\"javascript:;\" onmouseover=\"mouseOver(-4)\" onmouseout=\"mouseOut()\"><img src=\"images/up.jpg\" alt=\"Scroll naar boven\" /></a>");


Tevens mis ik de punt-komma na elke regel JS-code bij het document.write blok.

[ Voor 3% gewijzigd door Upsal op 22-09-2006 21:31 ]


Verwijderd

Upsal schreef

Tevens mis ik de punt-komma na elke regel JS-code bij het document.write blok.
Is niet verplicht, wel aan te raden.

[ Voor 10% gewijzigd door Verwijderd op 22-09-2006 21:31 ]


Verwijderd

Topicstarter
Hmm, verbazend dat ik een zo voor de hand liggende mogelijkheid ook niet heb uitgeprobeerd. Iig, het werkt. Bedankt daarvoor.

Over die punt-komma; ik zie er ook nooit staan op w3schools, dus ik veronderstelde dat ze niet meer nodig waren.
edit:
*nieuwsgierig* Waarom aangeraden? Ik zie niet meteen een probleem door de afwezigheid


Black Box

[ Voor 16% gewijzigd door Verwijderd op 22-09-2006 21:36 ]


Verwijderd

Topicstarter
Kent iemand ook de reden waarom de opdracht return true niet wordt uitgevoerd in de mouseOver(value) methode? Als ik de methodeaanroep in de document.write vervang door de opdrachten uit de methode, dan is alles in orde. Indien dmv. methodeaanroep krijg ik de tekst javascript:; in de statusbar. Het ligt dus aan die return opdracht, maar hoe precies?

Sorry voor de dubbelpost, maar het betreft hier even iets anders.

Black Box

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Verwijderd schreef op vrijdag 22 september 2006 @ 21:34:
edit:
*nieuwsgierig* Waarom aangeraden? Ik zie niet meteen een probleem door de afwezigheid


Black Box
Ik zou em je aanraden omdat het netter staat, goed is om je aan te wennen mocht je ooit met andere talen te maken hebben (is hij in css niet WEL verplicht?) en gewoon vollediger is, mocht je ooit meerdere statements op 1 regel willen hebben, dan is hij wel onmisbaar.
Verwijderd schreef op vrijdag 22 september 2006 @ 21:48:
Kent iemand ook de reden waarom de opdracht return true niet wordt uitgevoerd in de mouseOver(value) methode? Als ik de methodeaanroep in de document.write vervang door de opdrachten uit de methode, dan is alles in orde. Indien dmv. methodeaanroep krijg ik de tekst javascript:; in de statusbar. Het ligt dus aan die return opdracht, maar hoe precies?

Sorry voor de dubbelpost, maar het betreft hier even iets anders.

Black Box
Misschien dat er zo gebeurt wat je wil:
JavaScript:
1
document.write("<a href=\"javascript:;\" onmouseover=\"return mouseOver(-4)\" onmouseout=\"mouseOut()\"><img src=\"images/up.jpg\" alt=\"Scroll naar boven\" /></a>");

Het heeft bij mij ook even geduurd voordat ik dit snapte, maar stel dat die extra "return" niet nodig was geweest, wat had het script dan moeten doen als er alert(mouseOver(-4)); stond?

Verwijderd

Topicstarter
Ik zou em je aanraden omdat het netter staat, goed is om je aan te wennen mocht je ooit met andere talen te maken hebben (is hij in css niet WEL verplicht?) en gewoon vollediger is, mocht je ooit meerdere statements op 1 regel willen hebben, dan is hij wel onmisbaar.
Dat is vanzelfsprekend :)
Misschien dat er zo gebeurt wat je wil:
Dat werkt, er wordt nu klaar weergegeven in de status balk. Hoewel ik liever de tekst had gezien die in voor window.status had gespecifieerd.
Het heeft bij mij ook even geduurd voordat ik dit snapte, maar stel dat die extra "return" niet nodig was geweest, wat had het script dan moeten doen als er alert(mouseOver(-4)); stond?
Euhm, nu weet ik niet of ik jou goed versta, maar de methode zou helemaal niets moeten weergeven in een alertbox, indien toch had er de waarde true mss gestaan?

Black Box

  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Dat werkt, er wordt nu klaar weergegeven in de status balk. Hoewel ik liever de tekst had gezien die in voor window.status had gespecifieerd.
Heb je al eens: top.status ipv. window.status geprobeerd ?

'Political Correctness is fascism pretending to be good manners.' - George Carlin


Verwijderd

Topicstarter
Geeft geen verschil...

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Verwijderd schreef op zondag 24 september 2006 @ 09:37:
Euhm, nu weet ik niet of ik jou goed versta, maar de methode zou helemaal niets moeten weergeven in een alertbox, indien toch had er de waarde true mss gestaan?

Black Box
Kijk, het is leuk dat de functie iets returnt (of dat nou een boolean of getal of string is). Maar dan moet je nog wel aangeven wat er met die gereturnde waarde gebeurt. In mijn voorbeeldje laat ik hem in een alert-boxje zien. Daarom moet je dus ook expliciet aangeven dat de gereturnde waarde door-gereturnd moet worden.

Als je niet expliciet aan had hoeven geven dat de gereturnde waarde ook weer door-gereturnd moet worden (heb je hem nog?) dan had je ook niet de mogelijkheid gehad om aan te geven dat er iets anders met de waarde moet gebeuren (zoals dus het alerten in mijn voorbeeld).

Wat de statusbalk betreft, Firefox geeft je de mogelijkheid om de statusbalk nooit te laten overschrijven. Dus wellicht is dat waarom je dit niet te zien krijgt, als het een website wordt voor het internet (dus niet intranet) dan zou ik er rekening mee houden dat je niet met de statusbalk kan rommelen en iets anders bedenken.
Pagina: 1