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

    chiamare il metodo del oggetto corretto

    ciao a tutti io penso di avere un problema di scope con degli oggetti

    codice:
    function element(obj, status){
    	this.obj = obj;
    	this.status = status;
    	this.onload = this.instance()
    }
    element.prototype.instance = function() {
    	this.action()
    	this.obj.childNodes[0].addEventListener("click", this.action, false);
    }
    element.prototype.action = function() {
    	if(this.status == true){
    		alert(this.status)
    		childs = this.obj.childNodes;
    		for(i=1; i<childs.length; i++){
    			childs[i].className = "hidden";
    		}
    		this.status = false;
    		alert(this.status)
    	}
    	else if(this.status == false){
    		childs = this.childNodes;
    		for(i=1; i<childs.length; i++){
    			childs[i].className = "normal";
    		}
    		this.status = true;
    	}
    	else{ alert(this.status); }
    }
    
    
    function list() {
    	var elements = document.getElementsByTagName("div");
    	for(x=0; x<elements.length; x++){
    		if(elements[x].getAttribute("class") == "block"){
    			new element(elements[x],true);
    			/*childs = elements[x].childNodes;
    			for(i=0; i<childs.length; i++){
    				alert(childs[i].innerHTML);
    			}*/
    		}
    	}
    }
    
    onload = function(){ list(); }
    in pratica quando aggiungo l'evento via listener this.action lo faccio sull'oggetto inferiore, quello del nodo 1, invece io vogloi chiamarlo sul oggetto da me istanziato, qualcuno mi sa aiutare?

    tks
    Luca Mascaro
    Usability e Accessibility Engineer, User Interface Designer/Engineer
    NOW BLOG
    W3C HTML & WCAG WG Member for IWA/HWG

  2. #2
    HEEELLLLP NESSUNO MI SA AIUTARE
    Luca Mascaro
    Usability e Accessibility Engineer, User Interface Designer/Engineer
    NOW BLOG
    W3C HTML & WCAG WG Member for IWA/HWG

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    "Suggerire ad uno che sa di latino...?"
    ha detto qualche tempo fa uno che abitava non lontano da dove sei ...

    Ci metti in difficolta`.

    Ma lascia che ti faccia una domanda. A cosa e` riferito questo
    onload = function(){ list(); }

    Non dovrebbe essere:
    document.onload = function(){ list(); }
    oppure:
    this.onload = function(){ list(); }
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    eheh quel onload scritto in quel modo funziona tranquillamente perchè il renderer lo considera per l'oggetto principale

    il problema è qui

    this.obj.childNodes[0].addEventListener("click", this.action, false);

    perchè quel this.action chiama l'azione sul nodo figlio a cui si deve agganciare, invece deve chimarla su this, e non ho la più pallida idea di come si faccia
    Luca Mascaro
    Usability e Accessibility Engineer, User Interface Designer/Engineer
    NOW BLOG
    W3C HTML & WCAG WG Member for IWA/HWG

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    ... Magari(anzi, probabilmente) dico una cretinata, ma hai provato con:
    codice:
    this.obj.childNodes[0].addEventListener("click", parent .action, false);
    E solo una cosa campata per aria e basata più su un modello teorico di OOP più che sulla conoscenza del linguaggio, ma potrebbe anche funzionare
    Secan

  6. #6
    già provato il problema e che se uso parent finosco a navigare nell'albero dom del documento e non più nella struttura degli oggetti
    Luca Mascaro
    Usability e Accessibility Engineer, User Interface Designer/Engineer
    NOW BLOG
    W3C HTML & WCAG WG Member for IWA/HWG

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.