Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    non capisco dov'è l'errore

    ciao a tutti
    mi potete spiegare come mai la funzione che vi posto sotto non funziona ?

    codice:
    		function CreateScroll (sWidth,sHeight, sSpeed,sContent) {
    			
    			var scrollerwidth=sWidth+"px"
    			
    			var scrollerheight=sHeight+"px"
    			
    			var scrollerspeed=sSpeed
    			
    			var scrollercontent=sContent;
    			
    			var pauseit=1
    						
    			scrollerspeed=(document.all)? scrollerspeed : Math.max(1, scrollerspeed-1) //slow speed down by 1 for NS
    			var copyspeed=scrollerspeed
    			var iedom=document.all||document.getElementById
    			var actualheight=''
    			var cross_scroller, ns_scroller
    			var pausespeed=(pauseit==0)? copyspeed: 0
    			
    			function populate(){
    				if (iedom){
    					cross_scroller=document.getElementById? document.getElementById("iescroller") : document.all.iescroller
    					cross_scroller.style.top=parseInt(scrollerheight)+8+"px"
    					cross_scroller.innerHTML=scrollercontent
    					actualheight=cross_scroller.offsetHeight
    				}
    				else if (document.layers){
    					ns_scroller=document.ns_scroller.document.ns_scroller2
    					ns_scroller.top=parseInt(scrollerheight)+8
    					ns_scroller.document.write(scrollercontent)
    					ns_scroller.document.close()
    					actualheight=ns_scroller.document.height
    				}
    				lefttime=setInterval("scrollscroller()",50)
    			}
    			window.onload=populate
    			
    			function scrollscroller(){
    			
    				if (iedom){
    					if (parseInt(cross_scroller.style.top)>(actualheight*(-1)+8))
    						cross_scroller.style.top=parseInt(cross_scroller.style.top)-copyspeed+"px"
    					else
    						cross_scroller.style.top=parseInt(scrollerheight)+8+"px"
    				}
    				else if (document.layers){
    					if (ns_scroller.top>(actualheight*(-1)+8))
    						ns_scroller.top-=copyspeed
    					else
    						ns_scroller.top=parseInt(scrollerheight)+8
    				}
    			}
    			
    			if (iedom||document.layers){
    				with (document){
    					if (iedom){
    						write('<div style="position:relative;width:'+scrollerwidth+';height:'+scrollerheight+';overflow:hidden" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=scrollerspeed">')
    						write('<div id="iescroller" style="position:absolute;left:0px;top:0px;width:100%;">')
    						write('</div></div>')
    					}
    					else if (document.layers){
    						write('<ilayer width='+scrollerwidth+' height='+scrollerheight+' name="ns_scroller">')
    						write('<layer name="ns_scroller2" width='+scrollerwidth+' height='+scrollerheight+' left=0 top=0 onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=scrollerspeed"></layer>')
    						write('</ilayer>')
    					}
    				}
    			}
    		}
    		CreateScroll (130,100,1,'<font size=3>test</font>') ;
    Così facendo, non mi funziona, ma se commento la prima riga dove dichiaro la funzione ed inserisco parametri fissi come scrollerwidth, scrollerheight, scrollerspeed e scrollercontent ed eliminando anche la chiamata a funzione (CreateScroll (130,100,1,'<font size=3>test</font>'))lo script mi funziona..

    Non capisco questo comportamento
    Voi ?

    Grazie in anticipo.
    Nulla è impossibile. Il difficile è trovare la soluzione che renda l'impossibile possibile...
    http://www.eternaldream.it

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Forse perche' stai tentando di sommare delle stringhe a dei numeri... forza la conversione a stringa:

    var scrollerwidth=""+ sWidth+"px"
    var scrollerheight=""+ sHeight+"px"
    var scrollerspeed=""+ sSpeed
    var scrollercontent=sContent;

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    purtroppo non basta quella modifica.

    Lo script ancora non funziona.

    Firefox mi restituisce il seguente errore:
    "scrollscroller is not defined"

    ma non capisco come mai se lo levo dalla funzione "Create scroll" tutto funziona.
    Nulla è impossibile. Il difficile è trovare la soluzione che renda l'impossibile possibile...
    http://www.eternaldream.it

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    chiaro che non vada, cosi' una temporizzazione
    lefttime=setInterval("scrollscroller()",50)
    cerca di richiamare una funzione che e' definita solo localmente all' interno di un' altra funzione

    se vuoi usare il costruttore (quella funzione in cui racchiudi tutto) serve, appunto, un po' di OOP

    lo fai x avere + di uno scroller?

  5. #5
    esatto, in modo da poter richiamare l'oggetto senza dover ricopiare tutto il codice e per avere codice più pulito.

    Hai qualche soluzione per aggiustarlo ?
    Nulla è impossibile. Il difficile è trovare la soluzione che renda l'impossibile possibile...
    http://www.eternaldream.it

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da alexdem24
    esatto, in modo da poter richiamare l'oggetto senza dover ricopiare tutto il codice e per avere codice più pulito.
    questo non vuol dire che l' obiettivo e' averne + di uno nella stessa pagina, ho capito bene?

  7. #7
    bhe, diciamo che in teoria ce ne sarebbe uno per ogni pagina, nella colonna di destra, ma non voglio scartare la possibilità di utilizzarlo anche nella colonna centra se mi dovesse servire all'interno del contesto della pagina.

    vorrei soltanto capire come mai non funziona. Ho qualche conoscenza di OO, in php d itanto in tanto creo classi con funzioni al loro interno, ma con questa mi sono proprio perso.

    So che mi hai detto che non va xchè richiamo la funzione "scrollscroller()" all'interno di un'altra funzione, ma se elimino il costruttore (CreateScroll), tutto funziona, anceh se la funzione scrollscroller() rimane al suo posto. E' quello che non capisco !!

    Mi aiuti a capire perfavore ?
    Nulla è impossibile. Il difficile è trovare la soluzione che renda l'impossibile possibile...
    http://www.eternaldream.it

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    esempio elementare
    codice:
    function a(){
    	function b(){alert('ciao')}
    }
    b()
    scatta l' alert? no
    la funzione b non e' accessibile se non dentro a

    il problema e' principalmente qui
    lefttime=setInterval("scrollscroller()",50)
    x il motivo che ti ho detto e ripetuto poco sopra

  9. #9
    ma quello che non capisco è che io la funzione non la chiamo dall'esterno, ma dall'interno.

    Nel tuo esempio, io richiamo la funzione b() all'interno della funzione a() e non all'esterno come il tuo esempio mostra.

    Nel caso stia sbagliando scusami se insisto, ma voglio capire.

    (Nel caso stia sbagliando, come la risolveresti tu?)
    Nulla è impossibile. Il difficile è trovare la soluzione che renda l'impossibile possibile...
    http://www.eternaldream.it

  10. #10
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    fai bene ad insistere,
    ma credi di richiamare la funzione da dentro

    quando setti un timeout, dopo il tempo stabilito viene richiamata la funzione
    = dopo 50 millisecondi, viene eseguita... scrollscroller()
    sei ancora dentro la funzione genitore? no, sei a livello di window,
    come se potessi scrivere ogni 50 millisecondi
    <script>window.scrollscroller()</script>

    devi mantenere un legame tra la funzione genitore
    e tutto quello che succede al suo interno, in modo che una volta eseguita si possa fare ancora riferimento al contenuto,
    quindi, come minimo,
    mantenere un riferimento globale all' oggetto
    window['scroller']=this

    definire scrollscroller come metodo dell' oggetto
    this.scrollscroller=function(){
    // tutto quello che hai in scrollscroller()
    }

    l' interval diventa
    lefttime=setInterval("window['scroller'].scrollscroller()",50)

    ripeto, questo e' il minimo,
    pausa e riavvio x es. non funzioneranno cosi'

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.