JavascriptProva

venerdì 20 gennaio 2012

Abbandoniamo la sintassi document.write per usare il document.body.innerHTML

Con il document.write vengono fuori un sacco di problemi. Per cominciare, ciò che è già presente nella pagina sparisce, e poi la pagina non smette più di caricarsi.
Ho fatto qualche ricerca e ho appreso da una pagina web che si può usare anche la sintassi document.body.innerHTML, con gli stessi risultati... e sempre con la stessa mancanza di risultato in Internet Explorer... GRUNTH!
function linea(nomeLinea,spessore,colore,orgX,orgY,lunghezza,ang){
 var nomeLinea=nomeLinea;
 var orgX=orgX;
 var orgY=orgY;
 var lunghezza=lunghezza;
 var angolo=ang;
 var velAng;
 var intervallo;
 var spessore=spessore;
 var linea="";
 this.disegna=function(){
  for (var n=0;n<=lunghezza;n++){
   
     linea+="<div id='"+nomeLinea+n+"' style='font-size:1px;position:absolute;left:"+(orgX+n*Math.cos(angolo*Math.PI/180))+"px;top:"+(orgY+n*Math.sin(angolo*Math.PI/180))+"px;background-color:"+colore+";width:"+spessore+"px;height:"+spessore+"px'></div>"; 
  
   
  }
  document.body.innerHTML+=linea;
  
  }  
 this.disegna.call();
 
 this.step=function(){
   for(var n=0;n<=lunghezza;n++){  
     document.getElementById(nomeLinea+n).style.left=orgX+n*Math.cos(angolo*Math.PI/180);
     document.getElementById(nomeLinea+n).style.top=orgY+n*Math.sin(angolo*Math.PI/180);
    }
  angolo+=velAng;

  }
  
 this.ruota=function(velocitaAngolare,tempo){ 
   window.clearInterval(intervallo);
  velAng=velocitaAngolare;
   intervallo=window.setInterval(function(linea) {linea.step()},tempo,this);
 }
 
}
E così riesco ad eseguire questo:
<script type="text/javascript" src="linea.js"></script>
<script>
var prima;
function traccia(){
 prima=new linea("uno",2,"green",100,100,300,45);
 prima.ruota(1,1);
}
</script>
<body onLoad="traccia()">
<div>Ciao fesso</div>

</body>
che prima anche in Firefox non funzionava. Funziona, come al solito, in Firefox ma non in IE.

Dovrò decidermi prima o poi a imparare la lingua di IE...

Nessun commento:

Posta un commento