Toon posts:

Smarty variabelen weergeven met javascript innerHTML

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi tweakers,

Ik zit met een probleempje..

Het volgende stuk javascript code eerst (sry voor de inline):
code:
1
2
3
4
5
6
function putPrice(){
    if (document.getElementById('huur-koop1').value = "huur_per_maand"){
        var output = "<p class=\"price\">Prijsklasse van/tot</p><select name=\"min\<option value=\"60\"{if $get.min=='60'} selected=\"selected\"{/if}>&euro; 60,- p/m² p/m</option>
        document.getElementById('priceDiv').innerHTML = output;
    }
}


Je ziet de smarty statements in de output variablele. Het probleem is dat deze statement niet worden erkend door de smarty engine. Waarschijnlijk omdat ze niet in de pagina worden geladen bij "onLoad" van de body.

De html template (met smarty sjizzle) ziet er als volgt uit:
code:
1
2
3
4
5
6
7
<input onMouseUp="putPrice();" type="radio" id="huur-koop1" name="huur-koop" value="huur_per_maand" {if $hk == "huur_per_maand"} checked="checked" {/if}/>Huur per m² per maand<br />

<div id="priceBlock">
        {if $hk == "huur_per_maand"}
        <script language="javascript">putPrice1();</script>
        {/if}
</div>


Mijn vraag is nu: weet iemand een manier om dit te omzeilen? Er dus voor zorgen dat bijvoorbeeld een IF statement ook daadwerkelijk door smarty wordt opgepakt ipv dat de hele statement in de tag wordt geflikkerd.

Ik hoop dat ik een beetje "sense" maak.. ;)

bvd

  • mocean
  • Registratie: November 2000
  • Laatst online: 15-01 14:31
Heb je putPrice in een extern JS bestand staan? dan werkt het sowieso niet.

En inline zet je JS vaak tussen {literal} tags omdat { en } door smarty worden gebruikt.

Dus: Je JS parsen in een PHP file en de smarty-vars buiten de literal tag, dat moet werken.

Koop of verkoop je webshop: ecquisition.com


Verwijderd

Topicstarter
nee zit niet in een .JS bestand ...

Smarty buiten de literal zetten? :|

zoiets:
code:
1
... <select name=\"min\<option value=\"60\" {/literal}  {if $get.min=='60'} selected {/if}  {literal} ...

[ Voor 3% gewijzigd door Verwijderd op 14-08-2007 20:23 ]


  • mocean
  • Registratie: November 2000
  • Laatst online: 15-01 14:31
Verwijderd schreef op dinsdag 14 augustus 2007 @ 20:22:
nee zit niet in een .JS bestand ...

Smarty buiten de literal zetten? :|

zoiets:
code:
1
... <select name=\"min\<option value=\"60\" {/literal}  {if $get.min=='60'} selected {/if}  {literal} ...
Zoiets inderdaad, maar dit is ook niet goed:
<select name=\"min\<option value
Je select wordt niet afgemaakt, post eens een langer stuk code?

Koop of verkoop je webshop: ecquisition.com


Verwijderd

Topicstarter
Nouja.. het idee.. ik snap dat ik de select tag enzo nog ff moet afmaken natuurlijk ;)

Ik ga het ff testen... Be right back

Verwijderd

Topicstarter
Jeeej!!!

It works! Vrij simpel eigenlijk als je er over nadenkt... :) thx man

Verwijderd

Een andere optie is om geen {literal} tag te gebruiken en de accolades van javascript te vervangen door {ldelim} en {rdelim}, alhoewel dat wat minder fraai in het template bestand staat.

Verwijderd

Ik zit met hetzelfde probleem maar ik heb mijn JavaSript in een extern bestand zitten... is er dan geen mogelykheid dat ik het werkend krijg :s? je kan met smarty dus geen gebruik maken van external javascripts indien je er variabelen uit je template in wilt gebruiken :s?

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
Is er nog een dwingende reden om het überhaupt met Javascript te doen? Lijkt mij sowieso een slecht idee, voor zowel de bezoekers, zoekmachines en je karma (document.write, innerHTML e.d. zijn imnso niet netjes). Probeer het gewoon in de HTML te krijgen, als je toch al met een template engine bezig bent, hetgeen uiteraard wél een goed idee is, zou dat toch geen probleem te zijn.

Verwijderd

Nee, ik heb een JavaScript nodig voor mijn menu enzo... maar is het dus echt niet mogelijk om een variabele van de template te gebruiken in je externe javascript?
Njah dan zet ik gewoon het Javascript in het html-bestand zelf maar khad het liever in een appart gehad....

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
Verwijderd schreef op zaterdag 18 augustus 2007 @ 02:49:
Nee, ik heb een JavaScript nodig voor mijn menu enzo... maar is het dus echt niet mogelijk om een variabele van de template te gebruiken in je externe javascript?
Njah dan zet ik gewoon het Javascript in het html-bestand zelf maar khad het liever in een appart gehad....
Je kunt het via de DOM proberen, dat is sowieso netter imo. Overigens zouden ook menu's zonder javascript moeten kunnen werken, of iig de site navigeerbaar houden..

  • mocean
  • Registratie: November 2000
  • Laatst online: 15-01 14:31
Je kan toch je JS bestand ook door Smarty laten generegen?
Gewoon een .js.php zeg maar. En dan in je JS de smarty vars gebruiken.

Koop of verkoop je webshop: ecquisition.com

Pagina: 1