[jQuery] een variabele plaatsen in een functie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rwin
  • Registratie: Juni 2001
  • Laatst online: 13-07 17:18

Rwin

Ondertitel

Topicstarter
Ik probeer een variabele te plaatsen, (adressen) maar volgens mij moet dat net anders geformuleerd worden, maar ik zie niet wat.

Dit werkt (zonder variabele)

JavaScript:
1
2
3
4
5
6
7
<script type="text/javascript">
$(function() {
   $("#pbwGmap").gMap({markers: [{ address: "Tettnang, Germany", html: "werkt ie?" }] });
});
</script>

<div id="pbwGmap"></div>


Dit niet

JavaScript:
1
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
$(function() {
 var addresses = $('div#testgm').html();
   $("#pbwGmap").gMap(addresses);
});
</script>
<div id="pbwGmap"></div>


<div id="testgm">{markers: [{ address: "Tettnang, Germany", html: "werkt ie?" }] }</div>


Als ik de var addresses in console.log schrijf, wordt hij mooi opgehaald, en ik zie ik exact wat erin staat.

Wat doe ik fout?

RoadLash, eigen werk rockband | StringKings, rock covers


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 12:54

crisp

Devver

Pixelated

Je geeft in je 2e voorbeeld een string mee en geen object ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Rwin
  • Registratie: Juni 2001
  • Laatst online: 13-07 17:18

Rwin

Ondertitel

Topicstarter
een string zou ik toch zo meegeven ?

JavaScript:
1
$("#pbwGmap").gMap('addresses'); 

RoadLash, eigen werk rockband | StringKings, rock covers


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Precies ;) En wat er nu staat is dit:
JavaScript:
1
$("#pbwGmap").gMap('{markers: [{ address: "Tettnang, Germany", html: "werkt ie?" }] }');

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 12:54

crisp

Devver

Pixelated

Rwin schreef op donderdag 10 juni 2010 @ 23:39:
een string zou ik toch zo meegeven ?

JavaScript:
1
$("#pbwGmap").gMap('addresses'); 
ja ook, dat is een string literal. Punt is dat in je 2e voorbeeld de variabele addresses ook een string is; die krijgt immers de uitkomst van html() toegewezen, en dat is een string.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Rwin
  • Registratie: Juni 2001
  • Laatst online: 13-07 17:18

Rwin

Ondertitel

Topicstarter
moet ik van die string een object maken? Of is de hele gedachte van mij niet correct, en moet ik het niet als var proberen op te halen en in een functie te plaatsen?

RoadLash, eigen werk rockband | StringKings, rock covers


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 12:54

crisp

Devver

Pixelated

Ik vind de gedachte inderdaad vreemd; waarom wil je deze data in de HTML stoppen?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Rwin
  • Registratie: Juni 2001
  • Laatst online: 13-07 17:18

Rwin

Ondertitel

Topicstarter
in de div staat de data die ik in die functie moet hebben. Het is een Gmap plugin, die GoogleMaps punten zet op een GoogleMaps kaart. De adressen of lat/long punten komen via een database in die div.

RoadLash, eigen werk rockband | StringKings, rock covers


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

En als je het nou eens ipv in een div gewoon en de javascript gaat zetten, als object zoals je zou willen. Dan hoef je en niet iets weg halen op het scherm, én je kan het gebruiken zoals je wilt....

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Rwin
  • Registratie: Juni 2001
  • Laatst online: 13-07 17:18

Rwin

Ondertitel

Topicstarter
de div met de adressen staat al op de pagina, ik kan daar niets aan veranderen.
Ik zou het echter graag ophalen via de .html methode, zodat ik het kan gebruiken in de functie.

RoadLash, eigen werk rockband | StringKings, rock covers


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 12:54

crisp

Devver

Pixelated

Rwin schreef op vrijdag 11 juni 2010 @ 23:35:
de div met de adressen staat al op de pagina, ik kan daar niets aan veranderen.
Dan moet je minstens degene die dat bedacht heeft een flinke schop geven :P
Ik zou het echter graag ophalen via de .html methode, zodat ik het kan gebruiken in de functie.
Ik zie dan geen andere manier dan eval() gebruiken. Slechte designkeuzes vragen om vieze oplossingen...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
crisp schreef op zaterdag 12 juni 2010 @ 00:58:
Ik zie dan geen andere manier dan eval() gebruiken. Slechte designkeuzes vragen om vieze oplossingen...
Of zelf aan 't parsen slaan...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Rwin
  • Registratie: Juni 2001
  • Laatst online: 13-07 17:18

Rwin

Ondertitel

Topicstarter
Mensen bedankt!

Ik ben voor crisp's variant gegaan (niet eval, maar evil >:) , en heb de bedenker een figuurlijke schop gegeven)
Hij was wel schappelijk :-)

Het is nu gelukt, thanks!

RoadLash, eigen werk rockband | StringKings, rock covers


Acties:
  • 0 Henk 'm!

  • Alfredo
  • Registratie: Maart 2007
  • Laatst online: 31-07 19:40
Vermits de string de JSON notatie wel volgt, zou je er toch ook een object van kunnen maken met $.parseJSON()?

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
crisp schreef op zaterdag 12 juni 2010 @ 00:58:
[...]

Dan moet je minstens degene die dat bedacht heeft een flinke schop geven :P

[...]

Ik zie dan geen andere manier dan eval() gebruiken. Slechte designkeuzes vragen om vieze oplossingen...
An sich is het anders geen slecht idee om JSON literals te inlinen in een pagina. Op die manier kan een (extern, gecached) script file de JSON literal met configuratie/presentatie data uitlezen en gebruiken i.p.v. dat er inline javascript script tags gebruikt worden, waarbij de pagina rendering geblokkeerd wordt, de parser/JIT compiler opgestart moet worden en gedraaid moet worden, etc. Zo kun je dat allemaal uitstellen tot aan DOMContentLoaded en heb je geen global variables met deze configuratie/presentatie data nodig.

Google eens op 'script islands'. Die doen het nog een stukje beter door een script tag met een eigen, als experimental gemarkeerd content type te gebruiken. Bijv. <script type="x-application/json-literal">. Heel makkelijk uit te lezen door gewoon JSON.parse() op de .innerHTML v/d script tag te gebruiken.
Pagina: 1