Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con evento onclick

    Salve a tutti, ho creato una piccola funzione che crea tramite un ciclo for, degli oggetti IMG e poi setto i vari parametri, però quando vado a definire l'evento "onclick" non viene rispettato ed esegue direttamente la funzione:
    codice:
    function genera()
    {
        corpo=document.getElementsByTagName('BODY').item(0);
        for (i=0; i<3; i++) {
        Immagine = document.createElement('IMG');
        Immagine.setAttribute('name',"a");
        Immagine.setAttribute('alt',i);
        Immagine.setAttribute('src',"Image.png");
        Immagine.setAttribute('onclick',evento(corpo));
        Immagine.style.top=(i*50);
        Immagine.style.left=(i*50);
        Immagine.style.float='left';
        Immagine.style.position='absolute';
    	
        corpo.appendChild(Immagine);
        }   
    }
    
    function evento(corpo)
        {
        Prova =document.createElement('IMG');
        Prova.setAttribute('src',"Image_2.png");
        Prova.style.top= 400+'px';
    	Prova.style.left=400+'px';
        Prova.style.position='absolute';
        corpo.appendChild(Prova);
        }
    Qualcuno sa dirmi dove sbaglio e/o come migliorare il tutto?!?

    Grazie

  2. #2
    ciao, prova così:

    codice:
    Immagine.onclick=function(){evento(corpo);}
    saluti

  3. #3
    Grazie per la drtta, adesso funziona, a metà ma funziona. Adesso ho un altro problema: Inizialmente leggo le informazioni da un file xml dove risiedono le informazioni che devo reperire e piano piano le vado ad inserire nel ciclo for per creare l'immagine. Dal punto di vista grafico funziona perfettamente, ma quando vado a richiamare la funzione con l'evento onclick, (per semplicità di prova ho utilizzato un alert in cui mi dovrebbe comparire il "name" dell'imagine cliccata) mi crea un alert con la scritta del "name" dell'ultima immagine caricata e questa per tutte le immagini.

    codice:
    function DrawMap(file)
    {
    var XMLFile = file;
    var xml = null;
    
    if (document.implementation && document.implementation.createDocument)
    	{
    	xml = document.implementation.createDocument("","",null)
    	xml.onload=Disegna
    	xml.load(XMLFile);
    	}
    	else if (window.ActiveXObject)
    		{
    		xml = new ActiveXObject("Microsoft.XMLDOM")
    		xml.onreadystatechange = IEGo;
    		xml.load(XMLFile);
    		}
    	
    function IEGo()
    	{
    	if (xml.readyState == 4)
    		Disegna();
    	}	
    
    function Disegna()
    {
    	var Nodo = xml.getElementsByTagName("Elenco")[0].getElementsByTagName("item");
    	corpo = document.getElementsByTagName('BODY').item(0);
    	for (i = 0 ; i < Nodo.length ; i++)
    	{
    	            Immagine            = document.createElement('IMG');
    	            Immagine.name       = Value(Nodo[i],"Name");
    	            Immagine.alt        = Value(Nodo[i],"Cognome");
    	            Immagine.src        = Value(Nodo[i],"Sfondo");
    	            Immagine.style.top  = (Value(Nodo[i],"Riga")*25)+'px';
    	            Immagine.style.left = (Value(Nodo[i],"Colonna")*25)+'px';
    	            Immagine.style.position='absolute';
    	            Immagine.onclick = function() { alert(Immagine.name); }; 
                    corpo.appendChild(Immagine)	;
    	}
    }
    
    function Value(obj,tag)
        {
    	return obj.getElementsByTagName(tag)[0].childNodes[0].nodeValue;
    	}
    }
    Come posso creare questo genere di eventi? Avete idee???

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    in un gestore evento settato brutalmente, come in questo caso, il this si riferisce a chi ha originato l' evento stesso (Immagine)

    Immagine.onclick = function() { alert(this.name); };

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 © 2025 vBulletin Solutions, Inc. All rights reserved.