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

    .setAttribute Uncaught TypeError

    buongiorno,

    Ho un semplicissimo problema a cui non riesco trovare una soluzione:

    Ho creato un div e tramite un temporizzatore ingrandirlo gradualmente. Il problema persiste nel .setAttribute, infatti in Chrome mi dà il seguente errore:

    Uncaught TypeError: Object quadrato has no method 'setAttribute'

    codice:
    <html>
    <head>
    	<script>
    		window.onload=setup;
    		var height=200;
    		var width=height;
    
    		function setup () {
    			quadrato=document.getElementById("quadrato");
    			setTimeout("ingrandisci('quadrato')",1000);
    
    			quadrato.setAttribute("height",height+"px");
    			quadrato.setAttribute("width",width+"px");
    		}
    		function ingrandisci (div) {
    			if (height <= 500) {
    				height+=40;
    				width=height;
    
    				//non funzionano e ho dovuto usare lo style interno al div
    				//lo so che è inusato, ma questo è solo uno schema
    				//riassuntivo di quello che devo fare
    				div.setAttribute("height",height+"px");
    				div.setAttribute("width",width+"px");
    
    				setTimeout("ingrandisci('div')",200);
    			}
    		}
    	</script>
    </head>
    <body>
    	<div id="quadrato" style="height:200px;width:200px;background-color:blue;" ></div>
    </body>
    </hmtl>

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    A parte l'opportunità di aprire una nuova discussione... il problema sta ancora una volta qui:

    codice:
    			setTimeout("ingrandisci('quadrato')",1000);
    Vindav ti ha spiegato come risolverlo. Vediamo se capisci anche perché il tuo codice non va.

  3. #3
    Originariamente inviato da carlomarx
    codice:
    			setTimeout("ingrandisci('quadrato')",1000);
    Vai qua e guarda la risposta di "cavicchiandrea", e dato che funziona il problema non persiste in quello, ma come ho scritto in questo post il problema sta:

    codice:
    div.setAttribute("height",height+"px");
    div.setAttribute("width",width+"px");

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Mmmmh siamo presuntuosi :-)
    Io fossi in te proverei a sostituire questa riga:

    codice:
    			setTimeout("ingrandisci('quadrato')", 1000);
    con

    codice:
    			setTimeout(function() { ingrandisci(quadrato); }, 1000);
    e questa:

    codice:
    			setTimeout("ingrandisci('div')",200);
    con

    codice:
    			setTimeout(function() { ingrandisci(div); }, 200);
    &hellip;chissà, magari chiederai anche scusa al povero Vindav

  5. #5
    codice:
    <html>
    <head>
    	<script>
    		window.onload=setup;
    		var height=200;
    		var width=height;
    
    		function setup () {
    			quadrato=document.getElementById("quadrato");
    			setTimeout(function () {ingrandisci(quadrato);},1000);
    
    			quadrato.setAttribute("height",height+"px");
    			quadrato.setAttribute("width",width+"px");
    		}
    		function ingrandisci (div) {
    			if (height <= 500) {
    				height+=40;
    				width=height;
    
    				div.setAttribute("height",height+"px");
    				div.setAttribute("width",width+"px");
    
    				setTimeout(function () {ingrandisci(div);},200);
    			}
    		}
    	</script>
    </head>
    <body>
    	<div id="quadrato" style="height:200px;width:200px;background-color:blue;" ></div>
    </body>
    </hmtl>
    L'allargamento non me lo dà comunque.

  6. #6
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Che altro errore ti dà adesso?

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Come ti è già stato detto non occorreva aprire una nuova discussione potevi benissimo proseguire l'altro post il cross-post è vietato su html.it
    Detto questo la funzione ingrandisci non va perché non passi la variabile correttamente sintatti corretta con le "virgolette" (non credo si chiami cosi ma è per distinguerla)
    setTimeout("ingrandisci('"+div+"')",200);
    ma la versione migliore secondo molti (che condivido) è questa:
    setTimeout(function(){ingrandisci(div)},200);//senza apici o virgolette.


    Consiglio cerca d'essere più umile "Studiati etc...." certe frasi meglio non usarle qui sui forum tutti possono sbagliare per vari motivi e comunque:
    A) Vindav e Carlo sono tra i più preparti qui sul forum se ti giochi loro la vedo dura;
    B) Se tu che hai un problema e che chiedi aiuto alla comunity.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non funziona perché imposti male la funzione setup, prova questa vedrai che funziona:
    codice:
    <html>
    <head>
    	<script>
    		window.onload=setup;
    		var height=200;
    		var width=height;
    
    		function setup () {
    			setTimeout(function () {ingrandisci('quadrato')},1000);
    
    			quadrato.setAttribute("height",height+"px");
    			quadrato.setAttribute("width",width+"px");
    		}
    		function ingrandisci (div) {
    			if (height <= 500) {
    				height+=40;
    				width=height;
    
    				div.setAttribute("height",height+"px");
    				div.setAttribute("width",width+"px");
    
    				setTimeout(function () {ingrandisci(div);},200);
    			}
    		}
    	</script>
    </head>
    <body>
    	<div id="quadrato" style="height:200px;width:200px;background-color:blue;" ></div>
    </body>
    </hmtl>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da cavicchiandrea
    Non funziona perché imposti male la funzione setup, prova questa vedrai che funziona:
    [...]
    Occhio che non c'è nessun document.getElementById();

  10. #10
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    La fretta, come mi fa notare Carlo (grazie) manca il document.getElementById fai cosi:
    codice:
    <html>
    <head>
    	<script>
    		window.onload=setup;
    		var height=200;
    		var width=height;
    
    		function setup () {
    			setTimeout(function () {ingrandisci('quadrato')},1000);
    
    			document.getElementById('quadrato').setAttribute("height",height+"px");
    			document.getElementById('quadrato').setAttribute("width",width+"px");
    		}
    		function ingrandisci (div) {
    			if (height <= 500) {
    				height+=40;
    				width=height;
    
    				document.getElementById(div).setAttribute("height",height+"px");
    				document.getElementById(div).setAttribute("width",width+"px");
    
    				setTimeout(function () {ingrandisci(div);},200);
    			}
    		}
    	</script>
    </head>
    <body>
    	<div id="quadrato" style="height:200px;width:200px;background-color:blue;" ></div>
    </body>
    </hmtl>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.