[Javascript]Replace maar een keer

Pagina: 1
Acties:

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Topicstarter
Goeiemiddag allemaal

Ik heb een mooie kalender gevonden op het internet en ben daar nu wat in aan het frutten. Een van de dingen die nu lukt is dat je nu in je opener kan aangeven welke functie je kalender moet uitvoeren als je m sluit. Die functie kan ook andere waardes hebben. Het komt het er zo te staan:
JavaScript:
1
opencalener('formname.textname','closefunctie(\'waarde\')');

die waarde daar staat \' omheen omdat ie anders gaat flippen. Tot zover gaat alles goed.

Binnen een kalender moet je ook naar volgende en vorige jaren kunnen springen. Dan wordt de kalender opnieuw opgebouwd. Dan moeten die waardes dus ook allemaal weer mee. Het enige probleem is, dat de closefunctie er nu op de volgende manier staat:
JavaScript:
1
closefunctie('waarde')');  (het verschil er staat geen \')

Nu dacht ik: een replace zou het moeten doen, maar niet helemaal. Als ik de volgende functie uitvoer
JavaScript:
1
this.gReturnFunction.replace("'","\\'") //this.gReturnFunction is de string waar de ' in straat

dan replaced ie alleen de 1e ' en niet allebei.. En Dat snap ik niet. Zou iemand kunnen helpen.

-edit-
Dit komt er na de replace te staan:
JavaScript:
1
'test(\'lala')'

[ Voor 10% gewijzigd door Jaspertje op 21-05-2003 12:07 ]


  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Waarom replacen :? Het probleem bij de eerste regel code is dat als je geen gebruik maakt van "\" javascript de eerste ' ziet als einde van de opdracht en de rest van de regel dus niet begrijpt. Daarom moet je in dit soort gevallen ' en " afwisselen. Onderstaande zou wel moeten werken:
JavaScript:
1
opencalener('formname.textname','closefunctie("waarde")');

Dan hoef je dus helemaal niet te replacen. Wel zo eenvoudig


* WvdWest vraagt zich af waarom sommige mensen liever aan symptoombestrijding doen dan proberen het eigenlijke probleem te verhelpen :?

[ Voor 22% gewijzigd door WvdWest op 21-05-2003 12:15 ]

I'm not a complete idiot - several parts are missing.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:16

crisp

Devver

Pixelated

De replace method in javascript verwacht een reguliere expressie als 1e argument, en voorzover ik weet is "'" geen geldige reguliere expressie*. Verder moet de reguliere expressie in dit geval ook global uitgevoerd worden, anders vervangt hij inderdaad alleen de 1e match.

Het zou dus zoiets moeten worden:

JavaScript:
1
this.gReturnFunction.replace(/'/g, "\\'");


(de forward slash is de constructor voor een RegExp object)

* in dit geval wordt de string gecast naar een RegExp object door 'm door de constructor heen te halen van de vorm /'/
echter worden hier geen switches mee gegeven

[ Voor 27% gewijzigd door crisp op 21-05-2003 12:45 ]

Intentionally left blank


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Topicstarter
WvdWest schreef op 21 mei 2003 @ 12:11:
Waarom replacen :? Het probleem bij de eerste regel code is dat als je geen gebruik maakt van "\" javascript de eerste ' ziet als einde van de opdracht en de rest van de regel dus niet begrijpt. Daarom moet je in dit soort gevallen ' en " afwisselen. Onderstaande zou wel moeten werken:
JavaScript:
1
opencalener('formname.textname','closefunctie("waarde")');
Het enige probleem is, dat het een onclick functie is, en dan gaat dit niet werken want dat is het een unterminated string constant. Dan zou ik dat ook nog wel kunnen ondervangen, alleen in de kalender die ik heb, gebruiken ze ook overal HTML en om een href= moet wel " " heen dus dan krijg je daar weer problemen mee