Toon posts:

[js/jquery] Syntaxfout, of wat doe ik verkeerd?

Pagina: 1
Acties:

Onderwerpen


  • Karp
  • Registratie: augustus 2001
  • Laatst online: 21:38
Ik heb iets wat niet werken wil, en ik weet niet waarom. Ik heb een aantal .project-div's waarvan allen op de bovenste na moeten verschuiven.

Het volgende werkt:
JavaScript:
1
$('.project:gt(0)').animate({ top: 50, left : '+=5'}, 1000);



Het volgende werkt ook:

JavaScript:
1
2
var waarde = 50;
$('.project:gt(0)').animate({ top: waarde, left : '+=5'}, 1000);



Maar bij deze verschuift hij alleen naar rechts.

JavaScript:
1
$('.project:gt(0)').animate({ top: function() {return (50);}, left : '+=5'}, 1000);



Met welke informatie moet ik mijn gebrekkige javascript-kennis uitbreiden om dit tot een succes te laten worden?

Alvast bedankt

www.erikkroes.nl


  • Xuj
  • Registratie: november 2009
  • Laatst online: 28-08 09:49
Disclaimer: Ik ben geen JavaScript-guru.

Werken zulke functies? Ik dacht ik test het even in een alert(), daar werkte het niet.

Wat als je eerst je functie definieert?

JavaScript:
1
2
3
4
5
function foo()
{
    return 50;
}
$('.project:gt(0)').animate({ top: foo(), left : '+=5'}, 1000);

  • Karp
  • Registratie: augustus 2001
  • Laatst online: 21:38
Dat werkt ook gewoon maar ik wil het graag binnen de statement hebben omdat het een soort loop is, en ik wil uiteindelijk natuurlijk meer dan alleen die waarde van 50 doorgeven.

www.erikkroes.nl


  • Phoenix1337
  • Registratie: april 2009
  • Laatst online: 08-09 17:05
Als je afhankelijk van de div wil verschuiven kun je ook kijken naar $.each

  • aaajeetee
  • Registratie: augustus 2002
  • Laatst online: 23-09 21:54
Ik ben ook geen javascript guru, maar moet je die anonieme functie niet aanroepen op een of andere manier?

  • Xuj
  • Registratie: november 2009
  • Laatst online: 28-08 09:49
Pagina over anonieme functies in JavaScript: http://helephant.com/2008/08/javascript-anonymous-functions/

[Voor 75% gewijzigd door Xuj op 30-10-2010 20:45. Reden: Ik sprak onzin]


  • Karp
  • Registratie: augustus 2001
  • Laatst online: 21:38
Phoenix1337 schreef op zaterdag 30 oktober 2010 @ 20:32:
Als je afhankelijk van de div wil verschuiven kun je ook kijken naar $.each
Hmm ja, misschien is dat voorlopig de makkelijkste oplossing. Dank je!

www.erikkroes.nl


  • apokalypse
  • Registratie: augustus 2004
  • Laatst online: 08-09 10:18
aaajeetee schreef op zaterdag 30 oktober 2010 @ 20:35:
Ik ben ook geen javascript guru, maar moet je die anonieme functie niet aanroepen op een of andere manier?
Inderdaad. De animate functie krijg een map type aan. Deze wordt waarschijnlijk uitgelezen als map.top of map['top']. Indien dit een (inner) functie is, zou het aangeroepen moeten worden als map.top(). De documentatie geeft nergens aan dat (inner) functies gesupported worden onderdeel van een map.

De vraag is ook wat het nut is van een innerfunctie hier. Indien je een waarde net voor het animeren wilt ophalen/berekenen, kan je dit ook met een variabele doen zoals het 2de voorbeeld in de start post.
Karp schreef op zaterdag 30 oktober 2010 @ 20:28:
Dat werkt ook gewoon maar ik wil het graag binnen de statement hebben omdat het een soort loop is, en ik wil uiteindelijk natuurlijk meer dan alleen die waarde van 50 doorgeven.
Waarom is dit een soort loop? Animate doet maar een enkele animatie?

[Voor 21% gewijzigd door apokalypse op 30-10-2010 21:03]


  • Karp
  • Registratie: augustus 2001
  • Laatst online: 21:38
apokalypse schreef op zaterdag 30 oktober 2010 @ 20:56:
[...]

Inderdaad. De animate functie krijg een map type aan. Deze wordt waarschijnlijk uitgelezen als map.top of map['top']. Indien dit een (inner) functie is, zou het aangeroepen moeten worden als map.top(). De documentatie geeft nergens aan dat (inner) functies gesupported worden onderdeel van een map.

De vraag is ook wat het nut is van een innerfunctie hier. Indien je een waarde net voor het animeren wilt ophalen/berekenen, kan je dit ook met een variabele doen zoals het 2de voorbeeld in de start post.

[...]

Waarom is dit een soort loop? Animate doet maar een enkele animatie?
$('.project:gt(0)') selecteert meerdere elementen en zorgt dus voor meerdere animaties.

www.erikkroes.nl


  • Maximized
  • Registratie: april 2004
  • Laatst online: 22:03

Maximized

En niet minimized

Het probleem is, dat je hier een functie invoegt als een parameter zonder deze uit te voeren. Dit werkt dus bijvoorbeeld wel:

JavaScript:
1
$('.project:gt(0)').animate({ top: (function() {return (50);})(), left : '+=5'}, 1000);


Let hier op de ronde haken en de bekende () aan het einde. Op deze zelfde manier worden in de praktijk singleton instanties gecreëerd waarbij de functie bij het declareren direct wordt uitgevoerd.

Afijn. Haken d'r omheen en je bent klaar. :)

/edit Overigens: je hebt het hier over een loop. In bovenstaand voorbeeld is echter geen sprake van recursiviteit op wat voor manier dan ook, tenzij de methode animate() zelf-aanroepend is op de een of andere manier.

[Voor 19% gewijzigd door Maximized op 30-10-2010 21:38]


  • Matis
  • Registratie: januari 2007
  • Laatst online: 20:49

Matis

Rubber Rocket

In weet niet precies in welke browser jij je scripts draait. Maar Firefox heeft een hele goede javascript-console.

In combinatie met Firebug (console.log FTW) kun je heel eenvoudig je javascripts debuggen en ook on the fly aanpassen :)

If money talks then I'm a mime
If time is money then I'm out of time

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee