Wat klopt er hier niet?

Status
Niet open voor verdere reacties.

flarix

Gebruiker
Lid geworden
9 jan 2010
Berichten
5
Dit is mijn code:
[JS]function confirmation2() {
if(document.getElementById("all").style.display = 'block'){document.getElementById("all").style.display = 'none'}
else {document.getElementById("all").style.display = 'block'}
}[/JS]

Als het goed is moet dit er voor zorgen dat een div inklapt (div id: "all"). Dit gebeurd ook, maar als je er dan weer op klikt moet hij weer visible worden (display ="block") Maar dit laatste gebeurd niet. Waarom? :confused:
 
Binnen je if moet je dubbele is-tekens gebruiken ( == ipv = ).

== is een vergelijking, = is een toewijzing.
 
Binnen je if moet je dubbele is-tekens gebruiken ( == ipv = ).

== is een vergelijking, = is een toewijzing.

Waarom maken ze Javascript (en andere talen ook) niet zo dat je geen waardes aan variabelen kan toewijzen binnen een if, else of loop... Ik snap de logica niet... Nu zullen ze het wel niet meer wijzigen omdat iedereen hier al aan gewend is maar het is niet logisch. (In Autoit Script is het trouwens wel zoals ik bedoel)
 
Tsja, ook als dat niet zou kunnen, zou ik het nog steeds handig vinden om de dubbele = te gebruiken.

Daarnaast zijn in veel (de meeste?) talen variabelen van een bepaald type en dan kan het dus nuttig zijn om te kijken of je een bepaalde waarde aan een variabele kunt toekennen. En tenslotte is het makkelijk als een taal in bepaalde opzichten op een andere taal lijkt en wellicht heeft dat ook meegespeeld in de reden dat er in JS zo werkt.
 
Waarom maken ze Javascript (en andere talen ook) niet zo dat je geen waardes aan variabelen kan toewijzen binnen een if, else of loop
Nou, het heeft zo zijn voordelen:
[JS]function iets()
{
return true;
}


var z;

if(z = iets())
{
alert(z);
}[/JS]zal alleen 'true' alerten als z true is, ofwel als uit de functie iets() true komt. Overgens zegt Firefox wel:
Warning: test for equality (==) mistyped as assignment (=)?
Source File: file:///....//../././/test.html
Line: 11, Column: 13
Source Code:
if(z = iets())
 
[JS]function iets()
{
return true;
}


var z = iets();

if(z)
{
alert(z);
}[/JS]
 
ja natuurlijk, maar zelf vind ik die code die ik had neergezet, uhm, netter. Vooral als je variabele z uit een functie-parameter komt. Het is allemaal een kwestie van stijl I guess :)
 
Neemt niet weg dat er onderscheid is tussen declareren en vergelijken en er dus ook twee verschillende noteringen moeten zijn.
Je kan er niet van uitgaan dat een vergelijking alleen binnen de standaard statements voorkomt en dat een toewijzing alleen buiten deze statements gebeurt.

In iedere willekeurige taal zou je de uitkomst van een vergelijking moeten kunnen toewijzen aan een variabele. Dat kan niet als voor beide hetzelfde symbool wordt gebruikt.

PHP:
boolean flag = (enum == turningpoint)

Ik vraag me ook af of er bij de uitwerking van Robbinski12 geen verschil in scope is met die van Vegras.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan