[JS]probleempje, ik zie het niet....

Pagina: 1
Acties:
  • 161 views sinds 30-01-2008
  • Reageer

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
Ik heb op mijn site een balk met een drietal knoppen. Deze knoppen wil ik na een klik op een andere knop, laten veranderen van tekst en link. Dit doe ik als volgt;
ik heb 2 arrays aangemaakt, "agenda" en "foto's". Ik heb een 3e variabele aangemaakt, genaamd "kut" (gebrek aan inspiratie). Na een klik op een van de knoppen welke de andere knoppen moet veranderen, wordt de functie kies(temp) aangeroepen, met als argument 1 of 2. Het geheel heb ik zo in code gerealiseerd:
code:
1
2
3
4
5
6
7
8
9
10
11
<script language="JavaScript">
var agenda=new Array (["Partyplan","work1.html"],["Tours","work1.html"]);
var fotos=new Array (["Loveparade","foto1.html"],["Weetiket", "foto2.html"]);
var kut;
function kies(temp){
    if (temp==0){
        kut=agenda;}
    if (temp==1){
        kut=fotos;}
    }   
</script>

De balk met knoppen wordt gedeeltelijk als volgt opgemaakt:
code:
1
2
3
4
5
6
7
<script type="text/javascript">
document.write("<td width='100' align='center' onclick=document.getElementById('left').src='");
document.write(kut[0][1]);
document.write("' class='menu1' onmouseover='MakeSelected(this)' onmouseout='MakeDeselected(this)'>");
document.write(kut[0][0]);
document.write("</td>");
</script>

De knop welke de andere knoppen moet veranderen werkt als volgt:
code:
1
<td onclick="kies(0);document.getElementById('left').src='agenda1.html';ShowMenu('menubar');">Agenda</td>

Ik heb al gecontroleerd dat het probleem noch in het 2e stukje tussen code-tags zit, noch in het 3e stukje. Als ik bijvoorbeeld in het 2e stukje ipv kut[0][0] en kut[0][1], agenda[0][0] en agenda[0][1] invul, dan gaat alles goed. Daar kan het dus niet aan liggen. Ik denk eigenlijk dat het ligt aan het feit dat ik in dezelfde onclick, zowel de functie aanroep die de inhoud aan het array "kut" moet geven, als het scriptje waar datzelfde array wordt gebruikt om de tabel inhoud te geven. Maar ik zou zogauw even niet weten hoe ik dat anders moet doen. Iemand die het wel weet?

(btw, dis mijn 1e eigen geschreven javascriptje, het zou best eens omslachtig kunnen zijn, maar het zou moeten kunnen werken :) )

ff onnodige code gestript :)

[ Voor 0% gewijzigd door Dr_Frickin_Evil op 27-08-2002 20:32 . Reden: ff onnodige code gestript :) ]


  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 22:05

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Ach, weet je, ik ga dit niet eens lezen met deze layout verneuking. Das dubbel zo breed als mijn scherm @ 1170 x nogwat.

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
ff aangepast

  • Grom
  • Registratie: Juli 2002
  • Laatst online: 25-11-2024

Grom

lief hè!

Sorry hoor maar
Was er nou echt geen betere variabelenaam te verzinnnen als k*t?
Daarom werkt het dus niet :p :)

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
helaas, "bla" was al in gebruik :P

  • Grom
  • Registratie: Juli 2002
  • Laatst online: 25-11-2024

Grom

lief hè!

Niet alleen een
"gebrek aan inspiratie"
dus IMO!

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
back to the subject plz ;)

  • Croccifixio
  • Registratie: Maart 2002
  • Laatst online: 01-04-2025
Misschien moet je proberen om de arrays agenda fotos niet 'by reference' door te geven maar 'by value'.
Dus declareer 'kut' ook als array en kopieer in kies(temp) de waarden van agendas/fotos naar kut. Dus:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script language="JavaScript">
var agenda=new Array (["Partyplan","work1.html"],["Tours","work1.html"]);
var fotos=new Array (["Loveparade","foto1.html"],["Weetiket", "foto2.html"]);
var kut=new Array (2);
function kies(temp){
    if (temp==0){
        kut[0][0]=agenda[0][0];
                kut[0][1]=agenda[0][1];
                kut[1][0]=agenda[1][0];
                kut[1][1]=agenda[1][1];}
    if (temp==1){
        kut[0][0]=fotos[0][0];
                kut[0][1]=fotos[0][1];
                kut[1][0]=fotos[1][0];
                kut[1][1]=fotos[1][1];}
    }   
</script>


Minder mooi qua code, maar het is het proberen waard. Als dit zou werken, dan kan je verder kijken om de code wat mooier te maken.

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
zou niet uit moeten maken... toch? Ik heb het geprobeerd, maar dat werkt dus ook niet helaas.

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
bedenk ik me net, kan dit uberhaupt wel zonder de site eerst te refreshen?

Verwijderd

Als je de site refresht, dan is de site wel vergeten dat je op de button hebt geklikt. Ik weet verder ook niet precies wat je wil, maar ik geloof dat je in je functie kies moet verwijzen naar die knoppen, dus document.getElementById('knop1').href=agenda[0][1].
HTH

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:07

crisp

Devver

Pixelated

document.write kan je na het initieel schrijven van je pagina niet meer gebruiken om dynamisch content te gebruiken; hier moet je innerHTML voor gebruiken in combinatie met een div of span.
Verder heeft -TheGrimReaper- gelijk; een deregelijke constructie met array's:
code:
1
pruimpje = agenda;

levert een referentie naar de array agenda op; als je de array agenda nu gaat manipuleren, manipuleer je gelijk ook de array pruimpje.
Het mooist is om zelf een Array.copy() method te maken.

Intentionally left blank


  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
ik heb het nu op een heel andere manier opgelost (althans geprobeerd). Dit gaat als volgt:
functie MakeTable, maakt de tabel met de menuknoppen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function MakeTable()    
    {   
    var theHTML  = '<td width="100" align="center" onclick="document.getElementById(';
        theHTML += "'left'";
    theHTML += ').src='
    theHTML += "'work1.html'";
    theHTML += '" class="menu1">Partyplan</td>';
    alert(theHTML);
    if (document.getElementById) {
        document.getElementById('tabel').innerHTML = theHTML;}
    else if (document.all) {
        document.all['tabel'].innerHTML = theHTML;}
    }

op de plek waar de tabel met de menuknoppen moet komen:
code:
1
<div id="tabel"></div>

En de functie wordt door de onderste knoppen aangeroepen:
code:
1
onclick="document.getElementById('left').src='agenda1.html';MakeTable();ShowMenu('menubar');"

Maar nu krijg ik enkel de tekst te zien. De link werkt niet, zoals je kunt zien op http://131.155.240.208/lighttown/test5.html klik dan op Agenda. Weet iemand wat er nu mis is?

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
iemand?

  • Croccifixio
  • Registratie: Maart 2002
  • Laatst online: 01-04-2025
Ik zie dat je MakeTable inmiddels weer hebt veranderd. Die versie 2 doet het wel. En als je nu die OnClick handler toevoegt aan elk van de knoppen (naast de OnMouseOut en OnMouseOver handlers), dan doet 'ie het niet meer?

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
ik heb er net inderdaad zelfs mee zitten spelen, en nu lijkt het allemaal te werken :) alleen ik heb het nog niet geprobeerd om de OnClick handler toe te voegen. I'll keep you updated :P

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
hmm, nu werkt het niet meer.... zogauw ik document.getElementById('id') invoeg, gaat het mis, en geeft ie een foutmelding. Komt dat misschien omdat dat Id-stukje, op een andere plaats in de pagina staat, buiten het javascript? Maar dan zou de class-definitie ook niet moeten werken lijkt me?

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
jeuj :) nu werkt het weer.... toch een foutje in mn code gelukkig

  • Croccifixio
  • Registratie: Maart 2002
  • Laatst online: 01-04-2025
werkt alles nu, of niet?

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 01-09 16:15
yep :)
nog 1 vraagje alleen. Dit is mijn functie om die knoppen toe te voegen:
code:
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
26
27
28
29
30
31
32
33
34
35
36
function MakeTable1(naam1,link1,naam2,link2,naam3,link3)
    {
    var theHTML = '<table cellspacing="0" cellpadding="0" align="left" height="50">';
    theHTML += '<tr><td height="10"></td></tr>';
    theHTML += '<tr><td width="19"></td>';
    theHTML += '<td width="100" align="center" onclick="document.getElementById(';
    theHTML += "'left').src='";
    theHTML += link1;
    theHTML += ".html'";
    theHTML += '" onmouseover="MakeSelected(this)" onmouseout="MakeDeselected(this)" class="menu1">';
    theHTML += naam1;
    theHTML += '</td>';
    theHTML += '<td width="19"></td>';
    theHTML += '<td width="100" align="center" onclick="document.getElementById(';
    theHTML += "'left').src='";
    theHTML += link2;
    theHTML += ".html'";
    theHTML += '" onmouseover="MakeSelected(this)" onmouseout="MakeDeselected(this)" class="menu1">';
    theHTML += naam2;
    theHTML += '</td>'; 
    theHTML += '<td width="19"></td>';
    theHTML += '<td width="100" align="center" onclick="document.getElementById(';
    theHTML += "'left').src='";
    theHTML += link3;
    theHTML += ".html'";
    theHTML += '" onmouseover="MakeSelected(this)" onmouseout="MakeDeselected(this)" class="menu1">';
    theHTML += naam3;
    theHTML += '</td>';
    theHTML += '<td width="18"></td></tr>';
    theHTML += '<tr><td height="10"></td></tr></table>';
    alert(theHTML);
    if (document.getElementById) {
        document.getElementById('tabel').innerHTML = theHTML;}
    else if (document.all) {
        document.all['tabel'].innerHTML = theHTML;}
    }

Weet iemand een betere manier om een variabele in te voegen dan steeds een nieuwe regel te maken, en nieuwe aanhalingstekens? Zoals ik het nu heb is het een beetje omslachtig vind ik.
Pagina: 1