javascript
  • foreach
  • smarty
  • 2012-07-27 9 views 0 likes 
    0

    을 매핑하고 난 태그 사이에 대구유식과 구글은 내가 스마티를 사용하고

    {literal} 
    
    <script type="text/javascript"> 
        //<![CDATA[ 
    
        if (GBrowserIsCompatible()) { 
         // ==== first part of the select box === 
         var select_html = '<select onChange="handleSelected(this)">' + 
             '<option selected> - Select a location - <\/option>'; 
         // ===================================== 
         var gmarkers = []; 
         var htmls = []; 
         var i = 0; 
         var rozmiar = new google.maps.Size(12,20); 
           var punkt_startowy = new google.maps.Point(0,0); 
           var punkt_zaczepienia = new google.maps.Point(0,0); 
           var map; 
         var n=0; 
         var side_bar_html = ""; 
    
    
         var icon = new GIcon(); 
         icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png"; 
         icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png"; 
         icon.iconSize = new GSize(12, 20); 
         icon.shadowSize = new GSize(22, 20); 
         icon.iconAnchor = new GPoint(6, 20); 
         icon.infoWindowAnchor = new GPoint(5, 1);  
    
    
         var ikona1 = new GIcon(icon,"http://labs.google.com/ridefinder/images/mm_20_blue.png"); 
    
         // A function to create the marker and set up the event window 
         function createMarker(point,name,html,ikon) { 
          var options = { 
    draggable: true, 
    title: name, 
    icon: ikon, 
    clickable:true} 
         var marker = new GMarker(point,options); 
         GEvent.addListener(marker, "click", function() { 
          marker.openInfoWindowHtml(html); 
         }); 
         gmarkers[i] = marker; 
         htmls[i] = html; 
    
         // ======= Add the entry to the select box ===== 
         select_html += '<option> ' + name + '<\/option>'; 
         // ========================================================== 
    
         i++; 
         map.addOverlay(marker); 
         return marker; 
         } 
    
    
         // ======= This function handles selections from the select box ==== 
         // === If the dummy entry is selected, the info window is closed == 
         function handleSelected(opt) { 
         var i = opt.selectedIndex - 1; 
         if (i > -1) { 
          GEvent.trigger(gmarkers[i],"click"); 
         } 
         else { 
          map.closeInfoWindow(); 
         } 
         } 
    
         var wspolrzedne = new google.maps.LatLng(51.730430542940184,19.62158203125); 
    
         // create the map 
         var map = new GMap2(document.getElementById("map")); 
         map.addControl(new GLargeMapControl()); 
         map.addControl(new GMapTypeControl()); 
         map.setCenter(new GLatLng(51.730430542940184,19.62158203125), 6); 
    
        {/literal} 
        {foreach from=$znacznik key=key item=item} 
        {foreach from=$item key=k item=v} 
        //here 
          createMarker(new GLatLng(51.730430542940184,19.62158203125),'{if $k == 'nazwa_obiektu'}{$v}{/if}','<div class="dymek"><div style="border-bottom:2px solid red;margin-bottom:6px;text-align:left;"><a href="http://nocleg-i.pl/{if $k == 'id'}{$v}{/if}/google_maps/" style="color:#2A86C7;font-size:13px;font-family:Verdana;font-weight:bold;">{if $k == 'nazwa_obiektu'}{$v}{/if}</a></div></strong><div style="float:left;width:125px;"><strong><a href="http://nocleg-i.pl/{if $k == 'id'}{$v}{/if}/google_maps/"><img src="http://nocleg-i.pl/uzytkownicy/miroslawa/mini_0.jpg" alt="" border="0" /></a></div>Miasto: {if $k == 'miasto'}{$v}{/if}</div></div><div style="clear:both;"></div>',ikona1); 
        //here 
        {/foreach} 
        {/foreach} 
        {literal} 
          }else { 
         alert("Sorry, the Google Maps API is not compatible with this browser"); 
        } 
    
        // This Javascript is based on code provided by the 
        // Community Church Javascript Team 
        // http://www.bisphamchurch.org.uk/ 
        // http://econym.org.uk/gmap/ 
    
        //]]> 
        </script> 
        {/literal} 
    

    다음있어 구글 맵을 사용, 그 위에 위치 마커를이 동적으로 할 문제

    createMarker(new GLatLng(51.730430542940184,19.62158203125),'{if $k == 'nazwa_obiektu'}{$v}{/if}','<div class="dymek"><div style="border-bottom:2px solid red;margin-bottom:6px;text-align:left;"><a href="http://nocleg-i.pl/{if $k == 'id'}{$v}{/if}/google_maps/" style="color:#2A86C7;font-size:13px;font-family:Verdana;font-weight:bold;">{if $k == 'nazwa_obiektu'}{$v}{/if}</a></div></strong><div style="float:left;width:125px;"><strong><a href="http://nocleg-i.pl/{if $k == 'id'}{$v}{/if}/google_maps/"><img src="http://nocleg-i.pl/uzytkownicy/miroslawa/mini_0.jpg" alt="" border="0" /></a></div>Miasto: {if $k == 'miasto'}{$v}{/if}</div></div><div style="clear:both;"></div>',ikona1); 
    

    예를 들어 변수가 표시되지 않습니다. 변수를 표시하는 어딘가에서 foreach 함수를 사용할 때 아무 것도 표시하지 않으면 {$ k == 'nazwa_obiektu'} {$ v} {/ if}가 표시됩니다. 손으로 직접 입력하면 표시됩니다. 누군가 해결 방법을 알고있었습니다. ?

    +0

    것은을 사용 @ariel 대신 == –

    답변

    1

    아포스트로피 구성 방법을 확인하십시오. 이 시도하거나 자바 스크립트에 대한 값을 설정 한 사전 {assign}에서보고,

    createMarker(
        new GLatLng(51.730430542940184,19.62158203125), 
        '{if $k == "nazwa_obiektu"}{$v}{/if}', 
        '<div class="dymek"><div style="border-bottom:2px solid red;margin-bottom:6px;text-align:left;"><a href=\"http://nocleg-i.pl/{if $k == "id"}{$v}{/if}/google_maps/\" style=\"color:#2A86C7;font-size:13px;font-family:Verdana;font-weight:bold;\">{if $k == "nazwa_obiektu"}{$v}{/if}</a></div></strong><div style=\"float:left;width:125px;\"><strong><a href=\"http://nocleg-i.pl/{if $k == "id"}{$v}{/if}/google_maps/\"><img src=\"http://nocleg-i.pl/uzytkownicy/miroslawa/mini_0.jpg\" alt=\"\" border=\"0\" /></a></div>Miasto: {if $k == "miasto"}{$v}{/if}</div></div><div style=\"clear:both;\"></div>', 
        ikona1 
    ); 
    

    이나와

    가 {지정} 아포스트로피 혼란

    {if $k == "nazwa_obiektu"} 
        {assign var="nazwa_obiektu" value=$v} 
    {/if} 
    
    {if $k == "id"} 
        {assign var="id" value=$v} 
    {/if} 
    
    {if $k == "miasto"} 
        {assign var="miasto" value=$v} 
    {/if} 
    
        createMarker(
         new GLatLng(51.730430542940184,19.62158203125), 
         '{$nazwa_obiektu|default}', 
         '<div class="dymek"><div style="border-bottom:2px solid red;margin-bottom:6px;text-align:left;"><a href=\"http://nocleg-i.pl/{$id|default}/google_maps/\" style=\"color:#2A86C7;font-size:13px;font-family:Verdana;font-weight:bold;\">{$nazwa_obiektu|default}</a></div></strong><div style=\"float:left;width:125px;\"><strong><a href=\"http://nocleg-i.pl/{$id|default}/google_maps/\"><img src=\"http://nocleg-i.pl/uzytkownicy/miroslawa/mini_0.jpg\" alt=\"\" border=\"0\" /></a></div>Miasto: {$miasto|default}</div></div><div style=\"clear:both;\"></div>', 
         ikona1 
        ); 
    
    0

    귀하의 문제는 따옴표이다 :

    당신은 당신의 따옴표를 탈출, 또는 다른 사람을 사용하거나 필요
    "{if $k == 'nazwa_obiektu'}{$v}{/if}" 
    //^----------use double quotes--------^ 
    
    0

    :

    '{if $k == 'nazwa_obiektu'...}' 
    

    '{if $k == \'nazwa_obiektu\'...}' 
    

    또는

    '{if $k == "nazwa_obiektu"...}' 
    
    이어야한다
    +0

    의 EQ를 사용하여 시도를 방지 신택스 하이라이팅 기능이있는 IDE - 앞으로이 문제를 해결하기가 훨씬 쉬워 질 것입니다. – Matt

    관련 문제