JavaScript uitvoeren afhankelijk van de gevraagde referentie

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 15:20
Ik heb het volgende stuk code en de irrelevante stukken code heb ik verwijderd:
HTML:
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
<style type="text/css">
  Table {
    display: none;
     }
</style>

<script type='text/javascript'>
    function ShowTable(ObjectId) 
    {
        ObjectStyle = document.getElementById(ObjectId).style;
        if ( ObjectStyle.display == "table" )
            ObjectStyle.display = "none";
        else
            ObjectStyle.display= "table";
    }           
</script>

Verder in de code:

<a href="#" onclick="ShowTable('Ronde3');">Overzicht ronde 3</a>
<table id="Ronde3" class="Table">
<knip>
</table>

<a href="#" onclick="ShowTable('Ronde2');">Overzicht ronde 2</a>
<table id="Ronde2" class="Table">
<knip>
</table>

<a href="#" onclick="ShowTable('Ronde1');">Overzicht ronde 1</a>
<table id="Ronde1" class="Table">
<knip>
</table>

Wat er dus gebeurt is eigenlijk vrij eenvoudig: Bij het weergeven van de pagina zijn alle tabellen verborgen om ruimte te besparen. Zodra er op "Overzicht ronde X" wordt geklikt, wordt de esbetreffende tabel getoond of juist weer verborgen. Dit werkt goed, maar nu kwam ik op een vervelend punt uit wat ik tot nu toe niet heb kunnen oplossen.

Vanaf andere pagina's wordt er een met een referentie naar deze pagina verwezen:
HTML:
1
<a href="Uitslagen#Ronde2">Uitslag</a>

Dit werkt goed en er wordt ook netjes gepositioneerd op "Ronde2". (Ja, vroeger moest je anchors maken, maar tegenwoordig werkt dit ook met id's. ;) ) Helaas ziet de gebruiker nog niet de informatie omdat de tabel is dichtgeklapt. De gebruiker zou nu zelf nog moeten klikken om de tabel open te klappen, maar ik wil dat graag automatisch laten gaan.

Zelf krijg ik dat met geen mogelijkheid voor elkaar dat de opgevraagde tabel automatisch wordt opengeklapt.
Ik heb verschillende JavaScript-events geprobeerd maar niets heeft geleid tot het automatisch uitklappen van zo'n tabel. Na lang zoeken lijkt het er op dat ik de enige ben die dit probleem heb, want ik nergens iets gevonden waarbij dit probleem wordt beschreven.

Heeft iemand een idee of mogelijke tips om uit te proberen?

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • kaesve
  • Registratie: Maart 2009
  • Laatst online: 16-05 03:04
het idee is dat je de data, dus welke tabel uitgeklapt moet worden, uit de url ziet te halen. eerlijk gezegt heb ik zelf geen idee hoe dat moet, al zou het kunnen dat het gewoon vrij makkelijk te benaderen is via de DOM.. nuja, dat kan je verder vast zelf uit zoeken toch? :D

[ Voor 6% gewijzigd door kaesve op 01-10-2009 22:33 ]


Acties:
  • 0 Henk 'm!

  • B0rf
  • Registratie: Oktober 2008
  • Laatst online: 03-10-2024
Je kunt in de onload methode van je document kijken naar de location.href , controleren of er een # inzit, en op basis hiervan het juiste element openen.

JavaScript:
1
2
3
4
5
6
7
8
9
<script>
onload = function()
{
  if(location.href.indexOf("#") != -1)
  {
    document.getElementById(location.href.substr(location.href.indexOf("#")+1)).style.display = 'table';
  }
}
</script>


ongeveer (niet getest)

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Je kunt een JavaScript functie maken die op het onload event van je body het fragment uit de URL haalt en de juiste tabel uitklapt.

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 15:20
Ik ben dagen met dat probleem bezig geweest ik heb nooit aan de location.href gedacht. Nu ik eenmaal de location.href heb filter ik de referentie er inderdaad zo uit.
Bedankt. :)

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

B0rf schreef op donderdag 01 oktober 2009 @ 22:39:
Je kunt in de onload methode van je document kijken naar de location.href , controleren of er een # inzit, en op basis hiervan het juiste element openen.

JavaScript:
1
2
3
4
5
6
7
8
9
<script>
onload = function()
{
  if(location.href.indexOf("#") != -1)
  {
    document.getElementById(location.href.substr(location.href.indexOf("#")+1)).style.display = 'table';
  }
}
</script>


ongeveer (niet getest)
Ehm.... window.location.hash? :P

Meer dan dit hoef je niet te doen (on DOM-ready):
JavaScript:
1
2
if (window.location.hash)
  ShowTable(window.location.hash);

Eventueel met nog een check op de waarde van die hash, maar dat zal ook niet per se nodig zijn. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • B0rf
  • Registratie: Oktober 2008
  • Laatst online: 03-10-2024
window.location.hash begint bij mij met een #, dus dan moet je nog steeds een substring doen voor je 'm in de ShowTable functie gooit...maar die .hash kende ik nog niet, thanks, 't is inderdaad wel een betere oplossing

[ Voor 10% gewijzigd door B0rf op 01-10-2009 23:01 ]


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 15:20
Die hash kende ik ook nog niet. Weer wat geleerd. :)

Ik heb hem uiteindelijk zo geschreven:
JavaScript:
1
2
3
4
function BodyLoad() {
    if (window.location.hash) 
        ShowTable(window.location.hash.replace("#",""));
}

[ Voor 3% gewijzigd door Onbekend op 01-10-2009 23:21 ]

Speel ook Balls Connect en Repeat

Pagina: 1