Jquery - variabele in array aanpassen

Status
Niet open voor verdere reacties.

paul1234

Gebruiker
Lid geworden
30 jan 2008
Berichten
7
Hallo,

Ik ben niet zo bekend met javascript en weet eigenlijks niet hoe het heet en daarom ook niet precies waar ik op moet zoeken... ik hoop dat iemand hier mij kan helpen.

Ik heb een aantal checkboxes op een pagina waar achter een stukje javascript zit welke wat uitvoert adhv of het wel of niet aanstaat:


[JS]
function(data) {

$('#map-layers .layer').click(function() {

var layerID = parseInt($(this).attr('id'));

if ($(this).attr('checked')) {

var layer = window["test" + layerID + "layer"];
window["testlayer" + layerID] = layer;

}

else {


// hier gaat het om
test = testlayer1;

window.test.hide();


}
});
});

[/JS]

Op de pagina staan een drietal checkboxes met de ID's 1 / 2 / 3. Dus wanneer degene met ID1 aan wordt gezet moet het if gebeuren en als die uit wordt gezet moet het else gebeuren.

Nu gaat het bij de else dus niet zoals ik het zou willen. Daar is de 1 in test = testlayer1 dus het ID van de checkbox, deze zou eigenlijks al vanuit layerID gelezen moeten worden, maar dit krijg ik dus niet werkende....

Hoe ik hetzelf in gedachte had en geprobeerd had:

[JS]
test = "testlayer" + layerID;

window.test.hide();[/JS]

maar dit werkt dus helaas niet.

Kan iemand mij vertellen of het mogelijk is om het zo uit te voeren dat de functie bij het unchecken dus window.testlayer+layerID op hide zet?

(het heeft niet zozeer met Jquery te maken, dit gebruik ik eigenlijks alleen om de checkbox id op te halen en straks verder voor andere zaken)
 
Hoi paul1234,
De inhoud van een id="..." mag niet beginnen met een cijfer, zegt hier de w3c specificatie over een id:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").​
Een id="1" mag dus niet, wel een id="nr-1" o.i.d.
Zou dat het zijn?

Met vriendelijke groet,
CSShunter
 
Bedankt voor het antwoord maar dan kom ik in het begin van het script al in de problemen (en later dus ook):

[JS] $.getJSON("cats4.json", {}, function(data) {

$('#map-layers .layer').click(function() {

var layerID = parseInt($(this).attr('id'));[/JS]

doordat layerID als int wordt opgenomen kan ik dus niet met nr-2 werken, als ik dan de value als alert in het script mee laat gaan krijg ik de melding Not a Number (NaN). De NaNlayer kan dan vervolgens wel de window.NaNtest.hide(); uitvoeren maar dan is er ook helaas geen onderscheid tussen de verschillende checkboxes :(


UPDATE
Maaar als ik de punt gewoon simpel weghaal uit de laatste else statement dan gaat het prima!
Dus niet:
[JS] window.test + layerID.hide(); [/JS]
of:
[JS] window.["test" + layerID].hide(); [/JS]



maar wel:

[JS] window["test" + layerID].hide(); [/JS]

Op die manier wordt de gewenste statement wel uitgevoerd, ben erachter gekomen omdat ik eerst window.["test" + layerID].hide(); (met een puntje ertussen) had maar dit direct al een foutmelding gaf, punt weggehaald en werkt perfect!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan