Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    Costruire dinamicamente il nome di una variabile

    Ciao a tutti,
    e' possibile fare in javascript, lo stesso che faccio in php con questo codice?

    Codice PHP:
    <?
        $contador_ico
    =0;
    ?>            
                        
    for(i=0; i < marcadores.length; i++) {
        var icono[B]<?=$contador_ico?>[/B] = new GIcon();
        icono[B]<?=$contador_ico?>[/B].image = "images_localizador.php?logo="+marcadores[i][2];        
        icono[B]<?=$contador_ico?>[/B].iconSize = new GSize(50, 38);
        icono[B]<?=$contador_ico?>[/B].iconAnchor = new GPoint(37, 59);
        icono[B]<?=$contador_ico?>[/B].infoWindowAnchor = new GPoint(31, 8);
        
            var latlng = new GLatLng(marcadores[i][0],marcadores[i][1]);
        var marker = new GMarker(latlng,icono[B]<?=$contador_ico?>[/B]);  
        var testofinal="<div style=\"white-space:nowrap\">[b]"+marcadores[10][3];

        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(testofinal);
    <?
        $contador_ico
    ++;
    ?>
            
    });
    Usando quindi la variabile "i" (javascript) invece che contador_ico (php)?

    Grazie per qualsiasi consiglio.

    Ciao

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    window['icono'+i]

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Grazie della risposta.

    Pero' mi servirebbe un aiuto riguardo a questo codice, ed in particolare alla riga indicata tra >>>> <<<<<< , che mi ritorna questo errore

    window["marker_final" + i] is undefined
    --- window['marker_final'+i].openInfoWindowTabsHtml(text[i]);
    Codice PHP:
        function initialize(address) {
            
           var 
    geocoder = new GClientGeocoder();
       
        var 
    text = [];
        
        
    geocoder.getLatLng(
        
    address,
        function(
    point) {
            if (!
    point) {
                
    alert(address " not found");
            } else {
                var 
    map = new GMap2(document.getElementById("cw_google_maps"));
                
    map.setCenter(point13);
                  
                
    GDownloadUrl("file_xml.php", function(data) {
                var 
    xml GXml.parse(data);
                var 
    markers xml.documentElement.getElementsByTagName("marker");
              
                for (var 
    0markers.lengthi++) {
                    
                    var 
    icon_tienda = new GIcon();
                    
    icon_tienda.imagemarkers[i].getAttribute("image");
                    
    icon_tienda.iconSize = new GSize(5038);
                    
    icon_tienda.iconAnchor = new GPoint(3759);
                    
    icon_tienda.infoWindowAnchor = new GPoint(318);
                    
                    
    text[i] = markers[i].getAttribute("text");
                    
                    var 
    latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                             
    parseFloat(markers[i].getAttribute("lng")));

                     
    window['marker_final'+i]=new GMarker(new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                             
    parseFloat(markers[i].getAttribute("lng"))),{clickable:trueicon:icon_tiendatitle:text});
                    
                    
    map.addOverlay(window['marker_final'+i]);
                                
                    
    GEvent.addListener(window['marker_final'+i], "click", function() {
                            >>>>> 
    window['marker_final'+i].openInfoWindowTabsHtml(text[i]); <<<<<<<
                    });
                }
                });
            }
        });    

    Grazie in anticipo


    Edit

    Se scrivo questo codice, funziona (sostituisco di volta in volta la "i")

    Codice PHP:
                    GEvent.addListener(window['marker_final'+i], "click", function() {
                            
    marker_final2.openInfoWindowTabsHtml(text[3]);
            }); 

    Edit 2
    Il problema e' la variabile "i".

    Infatti, cosi' funziona...

    Codice PHP:

                    GEvent
    .addListener(window['marker_final'+i],
                                         
    "click"
                                         function() {
                                                 
    y=2;
                                                
    window['marker_final'+y].openInfoWindowTabsHtml(text[y]);
                                                } 
                                     ); 
    Qualche suggerimento su come posso assegnare a "y" la "i"?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Ho risolto dichiarando la variabile Y globale e assegnandogli il valore della variabile "i"...

    Pero' ora il problema e' nella logica del programma.

    Cerco di spiegarmi con un esempio

    Il risultato finale che dovrei avere, e' di questo tipo

    Codice PHP:
    GEvent.addListener(marker1,'click',function(){
    marker1.openInfoWindowHtml(html1);
    });

    GEvent.addListener(marker2,'click',function(){
    marker2.openInfoWindowHtml(html2);
    });

    GEvent.addListener(marker2,'click',function(){
    marker2.openInfoWindowHtml(html3);
    });

    GEvent.addListener(marker2,'click',function(){
    marker2.openInfoWindowHtml(html4);
    }); 
    In quanto ogni marker (punto sulla mappa) ha associato un testo differente.

    Come posso fare in modo che la mia parte di codice (che posto di nuovo qui) possa funzionare in questo modo?
    Attualmente mi prende solo l'ultimo valore della variabile "i"...ovvero 4

    Codice PHP:
        function initialize(address) {
            
           var 
    geocoder = new GClientGeocoder();
       
        var 
    text = [];
        
        var 
    y=0;
        
        
    geocoder.getLatLng(
        
    address,
        function(
    point) {
            if (!
    point) {
                
    alert(address " not found");
            } else {
                var 
    map = new GMap2(document.getElementById("cw_google_maps"));
                
    map.setCenter(point13);
                  
                
    GDownloadUrl("file_xml.php", function(data) {
                var 
    xml GXml.parse(data);
                var 
    markers xml.documentElement.getElementsByTagName("marker");
              
                for (
    i=0markers.lengthi++) {
                    
                    
    y=+i;
                    
                    var 
    icon_tienda = new GIcon();
                    
    icon_tienda.imagemarkers[i].getAttribute("image");
                    
    icon_tienda.iconSize = new GSize(markers[i].getAttribute("size"));
                    
    icon_tienda.iconAnchor = new GPoint(3759);
                    
    icon_tienda.infoWindowAnchor = new GPoint(318);
                    
                    
    text[i] = markers[i].getAttribute("text");
                    
                    var 
    latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                             
    parseFloat(markers[i].getAttribute("lng")));

                     
    window['marker_final'+i]=new GMarker(new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                             
    parseFloat(markers[i].getAttribute("lng"))),{clickable:trueicon:icon_tiendatitle:text});
                    
                    
    map.addOverlay(window['marker_final'+i]);
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>                    
    >>>>>  
    PARTE DA MODIFICARE <<<<<<<<<
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                    
    GEvent.addListener(window['marker_final'+i],
                                         
    "click"
                                         function() {
                                                
    window['marker_final'+y].openInfoWindowTabsHtml(text[y]);
                                                } 
                                     );
                }
                });
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    FINE PARTE DA MODIFICARE
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
            }
        });    


  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    cerca un esempio di closure per mantenere in scope la variabile
    se n'e' parlato varie volte

    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Xinod
    cerca un esempio di closure per mantenere in scope la variabile
    se n'e' parlato varie volte

    ciao
    Grazie per la dritta.
    Sto analizzando gli altri 3D sull'argomento, ma mi sembra piuttosto complessa la cosa.

    Vedro' quello che riesco a tirar fuori.

    ciao

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    prova al volo se basta cambiare questo
    function() {window['marker_final'+y].openInfoWindowTabsHtml(text[y]);}

    in questo
    (function(y){return function(){window['marker_final'+y].openInfoWindowTabsHtml(text[y])}})(y)

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Xinod
    prova al volo se basta cambiare questo
    function() {window['marker_final'+y].openInfoWindowTabsHtml(text[y]);}

    in questo
    (function(y){return function(){window['marker_final'+y].openInfoWindowTabsHtml(text[y])}})(y)
    Perfetto! Grande!
    Non so come ringraziarti.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.