Toon posts:

[Javascript] Condition van if statement doet stom

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het moest er toch een keer van komen, starten met Javascript. En dan stuit onvermijdelijk op de meest stompzinnige foutjes, hieronder waarschijnlijk eentje daarvan.

Het probleem is dat het gewoon niet werkt.. er gebeurt niet wanneer ik de <span> beklik. :)

Ik weet bijna zeker dat het aan de conditie van de if ligt, aangezien hij met twee aparte functies (dan ook twee <span>'s met onclick natuurlijk) wel gewoon werkt.
JavaScript:
1
2
3
4
5
6
7
8
9
function wissel() 
if ( document.getElementById('nav').style.display = "";){
document.getElementById('nav').style.display = "none";
document.getElementById('wv').style.backgroundImage = 'url(../img1.jpg)';
}
else {
document.getElementById('nav').style.display = "";
document.getElementById('wv').style.backgroundImage = 'url(../img..jpg)';
}
HTML:
1
2
<span id="wv" onclick="wissel()">verdwijn/verschijn</span>
<div id="nav">Navigatie</div>


Nu heb ik dus geen idee waar ik in godsnaam op zou kunnen zoeken.. op Google, op GoT, dus dan maar een topic. 8) Bvd.

  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11-2025
Ik programmeer wel in Java nooit in java script, maar dit viel me op:
if ( document.getElementById('nav').style.display = ""->;){

Hier een ";" na de "" =

Hoort die daar wel?

[ Voor 15% gewijzigd door Maxxi op 22-04-2006 00:05 ]


Verwijderd

Topicstarter
Was ook mijn twijfel, maar had ook geen resultaat.

  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11-2025
if (time < 10)
{
document.write("<b>Good morning</b>")
}

Werkt wel,

if (time < 10;) // de ;
{
document.write("<b>Good morning</b>")
}

werkt niet
http://www.w3schools.com/js/tryit.asp?filename=tryjs_ifthen
http://www.w3schools.com/js/js_if_else.asp


EDIT:

En hier een foutje
document.getElementById('wv').style.backgroundImage = 'url(../img..jpg)';
(../img..jpg) // 2x .. ipv 1

[ Voor 44% gewijzigd door Maxxi op 22-04-2006 00:09 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

== ipv = ;)

en die ; natuurlijk weg

[ Voor 56% gewijzigd door Erkens op 22-04-2006 00:07 ]


  • plakbandrol
  • Registratie: Juni 2002
  • Laatst online: 12-02 12:36
inderdaad die eerste puntkomma hoort er niet

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

die ; hoeft daar niet, maar is strikt genomen volgens mij niet fout.
Display zou echter nooit "" mogen zijn, maar slechts 'none', ' block', 'inline' of zelfs nog 'inline-block';
gebruik voor te debuggen ook firefox + javascript console, scheelt ontzettend veel tijd bij foutopsporen :)

oprecht vertrouwen wordt nooit geschaad


  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11-2025
Opgelost?

  • twanvl
  • Registratie: Februari 2005
  • Laatst online: 10-11-2025
Vergelijken moet met ==, niet met =. Die laatste is een toekening, en dat lijkt mij niet de bedoeling.

  • Skaah
  • Registratie: Juni 2001
  • Niet online
Erkens schreef op zaterdag 22 april 2006 @ 00:07:
== ipv = ;)

en die ; natuurlijk weg
Jup, want nu doe je een assigment, en een lege string geeft false; dus wordt het else {} blok uitgevoerd.

  • Victor
  • Registratie: November 2003
  • Niet online
Atgast schreef op zaterdag 22 april 2006 @ 00:09:
die ; hoeft daar niet, maar is strikt genomen volgens mij niet fout.
Display zou echter nooit "" mogen zijn, maar slechts 'none', ' block', 'inline' of zelfs nog 'inline-block';
gebruik voor te debuggen ook firefox + javascript console, scheelt ontzettend veel tijd bij foutopsporen :)
Display kan in dit geval wel degelijk leeg zijn, als het nog niet als rule in een inline style is gedefinieerd. De TS kan dan ook beter checken op de computedstyle van het element, dan op basis van inline styles. Zie ook Quirksmode.org

Verwijderd

Topicstarter
Nee. :/ Ik heb alles toegepast wat jullie zeiden, maar werken doet het niet..

Dit heb ik nu:
JavaScript:
1
2
3
4
5
6
7
8
9
function wissel() 
if ( document.getElementById('nav').style.display == "block"){
document.getElementById('nav').style.display = "none";
document.getElementById('wv').style.backgroundImage = 'url(../img1.jpg)';
}
else {
document.getElementById('nav').style.display = "block";
document.getElementById('wv').style.backgroundImage = 'url(../img..jpg)';
}


De Javascript Console van Firefox zegt overigens:

Fout
missing { before function body
Bronbestand http://127.0.0.1/
Regel 22
Broncode
if (document.getElementById('nav').style.display == "block"){

[ Voor 10% gewijzigd door Verwijderd op 22-04-2006 00:18 ]


  • Victor
  • Registratie: November 2003
  • Niet online
Verwijderd schreef op zaterdag 22 april 2006 @ 00:16:
[...]

Nee. :/ Ik heb alles toegepast wat jullie zeiden, maar werken doet het niet..

Dit heb ik nu:
JavaScript:
1
2
3
4
5
6
7
8
9
function wissel() 
if ( document.getElementById('nav').style.display == "block"){
document.getElementById('nav').style.display == "none";
document.getElementById('wv').style.backgroundImage == 'url(../img1.jpg)';
}
else {
document.getElementById('nav').style.display == "block";
document.getElementById('wv').style.backgroundImage == 'url(../img..jpg)';
}


De Javascript Console van Firefox zegt overigens:

Fout
missing { before function body
Bronbestand http://127.0.0.1/
Regel 22
Broncode
if (document.getElementById('nav').style.display == "block"){
Binnen je if conditie controleer je de waarde met ==, en als uit te voeren code gebruik je = om de waarde mee te zetten.

Verwijderd

Topicstarter
Um, ja, dat had ik ook eigenlijk.. Foutje! :)

  • Victor
  • Registratie: November 2003
  • Niet online
Verwijderd schreef op zaterdag 22 april 2006 @ 00:18:
Um, ja, dat had ik ook eigenlijk.. Foutje! :)
En even accolades om je functie zetten ;)

Verwijderd

Topicstarter
Nét, 1 seconde geleden kom ik daar ook achter. :D Wát een koe ben ik. Erg bedankt allemaal.. _/-\o_

Ik vond het al allemaal zo onlogisch dat het niet werkte.. :?

  • Chester
  • Registratie: September 2003
  • Niet online
Je vergeet een accolade na function wissel(). Moet zijn

code:
1
2
3
4
5
6
7
8
9
10
Function wissel(){
  if ( document.getElementById('nav').style.display == "block"){
    document.getElementById('nav').style.display = "none";
    document.getElementById('wv').style.backgroundImage = 'url(../img1.jpg)';
  }
  else {
    document.getElementById('nav').style.display = "block";
    document.getElementById('wv').style.backgroundImage = 'url(../img..jpg)';
  }
}


spuit 11 :P

[ Voor 30% gewijzigd door Chester op 22-04-2006 00:24 . Reden: Te langzaam met lezen/typen :P ]

"The test of a work of art is, in the end, our affection for it, not our ability to explain why it is good." - Stanley Kubrick | Trakt


Verwijderd

Topicstarter
Wrijf het er maar in.. _/-\o_

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 18-01 18:46

XangadiX

trepanatie is zóó kinderachtig

function (arguments) { statements }

* XangadiX wrijft het er ook even in :p

Stoer; Marduq

Pagina: 1