ugrás a tartalomhoz

nem tudom kitörölni a vonalat!

Medve · 2009. Május. 12. (K), 08.47
hali mindenki,
gondoltam írok egy egyszerű progit amivel egy kis koordináta rendszerben lehet vonalakat rajzolni.A kirajzolás az müködik is viszont nem tudom kitorolni.:P
Arra kérlek titeket, hogy valaki aki ért hozzá fussa már át legyen szives fejtse meg nekem mi a baj vele mert én már vagy két hete gyökölök rajta és nem tudtam megfejteni.
  1. <html>  
  2. <head>  
  3. <title>Medve&trade;  vektorgrafika 2.</title>  
  4. <script type="text/Javascript">  
  5.     var i=1;  
  6.       
  7.       
  8.     function rajzol(x1,y1,x2,y2){  
  9.           
  10.         var p0,px,A,B,p;  
  11.         r=Math.round(Math.random()*250+1);  
  12.         g=Math.round(Math.random()*250+1);  
  13.         b=Math.round(Math.random()*250+1);  
  14.         szin="rgb("+r+","+g+","+b+")";  
  15.           
  16.   
  17.                       
  18.         p0=document.createElement('DIV');  
  19.         p0.setAttribute('id','p0'+i);  
  20.         p0.setAttribute('style','position:absolute;left:'+(parseInt(x1)-2.5)+'px;top:'+(parseInt(y1)-2.5)*(-1)+'px;width:5px;height:5px;background-color:'+szin+';');  
  21.         p0.appendChild(document.createTextNode('P'+i));  
  22.         document.getElementById('origo').appendChild(p0);  
  23.         br=document.createElement('BR');  
  24.   
  25.   
  26.   
  27.         Padat=document.createElement('DIV');  
  28.         Padat.setAttribute('id','Padat'+i);  
  29.         Padat.appendChild(document.createTextNode('P'+i+'('+x1+';'+y1+')'));  
  30.         Padat.appendChild(br);  
  31.         document.getElementById('pontok').appendChild(Padat);         
  32.   
  33.   
  34.   
  35.         px=document.createElement('DIV');  
  36.         px.setAttribute('id','px'+i);  
  37.         px.setAttribute('style','position:absolute;left:'+(parseInt(x2)-2.5)+'px;top:'+(parseInt(y2)-2.5)*(-1)+'px;width:5px;height:5px;background-color:'+szin+';');  
  38.         px.appendChild(document.createTextNode('P'+(i+1)));  
  39.         document.getElementById('origo').appendChild(px);  
  40.         br=document.createElement('BR');  
  41.   
  42.   
  43.         Padat=document.createElement('DIV');  
  44.         Padat.setAttribute('id','Padat'+i+1);  
  45.         Padat.appendChild(document.createTextNode('P'+(i+1)+'('+x2+';'+y2+')'));  
  46.         Padat.appendChild(br);  
  47.         document.getElementById('pontok').appendChild(Padat);  
  48.         line=document.createElement('HR');  
  49.         line.setAttribute('style','width:80px;height:1px;');  
  50.         document.getElementById('pontok').appendChild(line);  
  51.         i=i+2;  
  52.   
  53.   
  54.   
  55.         A=(parseInt(y2)-parseInt(y1))*(-1);  
  56.         B=parseInt(x2)-parseInt(x1);  
  57.   
  58.           
  59.   
  60.         db=1;  
  61.         if (parseInt(y1) > parseInt(y2)){  
  62.             for (var y=parseInt(y2); y <= parseInt(y1); y=y+0.1 ){  
  63.                 x=(A*parseInt(x1)+B*parseInt(y1)-B*y)/A;      
  64.                 p=document.createElement('DIV');  
  65.                 p.setAttribute('ID','p'+i+';'+db);  
  66.                 p.setAttribute('style','position:absolute;left:'+x+'px;top:'+(y*(-1)+4)+'px;width:2px;height:2px;background-color:'+szin+';');  
  67.                 document.getElementById('origo').appendChild(p);  
  68.                 db++;     
  69.           
  70.             }  
  71.         }  
  72.           
  73.         if (parseInt(y1) < parseInt(y2)){  
  74.             for (var y=parseInt(y1); y <= parseInt(y2); y=y+0.1 ){  
  75.                 x=(A*parseInt(x1)+B*parseInt(y1)-B*y)/A;      
  76.                 p=document.createElement('DIV');  
  77.                 p.setAttribute('ID','p'+i+';'+db);  
  78.                 p.setAttribute('style','position:absolute;left:'+x+'px;top:'+(y*(-1)+4)+'px;width:2px;height:2px;background-color:'+szin+';');  
  79.                 document.getElementById('origo').appendChild(p);  
  80.                 db++;         
  81.             }  
  82.         }  
  83.           
  84.         if (parseInt(y1) == parseInt(y2)){  
  85.             if (parseInt(x1) < parseInt(x2)){  
  86.             for (var x=parseInt(x1); x<=parseInt(x2);x++){  
  87.                 p=document.createElement('DIV');  
  88.                 p.setAttribute('ID','p'+i+';'+db);  
  89.                 p.setAttribute('style','position:absolute;left:'+x+'px;top:'+(parseInt(y1)*(-1)+4)+'px;width:2px;height:2px;background-color:'+szin+';');  
  90.                 document.getElementById('origo').appendChild(p);  
  91.                 db++;  
  92.                 }  
  93.             }  
  94.             else{  
  95.             for (var x=parseInt(x2); x<=parseInt(x1);x++){  
  96.                 p=document.createElement('DIV');  
  97.                 p.setAttribute('ID','p'+i+';'+db);  
  98.                 p.setAttribute('style','position:absolute;left:'+x+'px;top:'+(parseInt(y1)*(-1)+4)+'px;width:2px;height:2px;background-color:'+szin+';');  
  99.                 document.getElementById('origo').appendChild(p);  
  100.                 db++;  
  101.             }  
  102.   
  103.             }  
  104.         }  
  105.     }  
  106.   
  107.   
  108.   
  109.     function kitorol(){  
  110.         for (var j=db; j>0 ;j--){  
  111.             var torlendo="p"+(i-1)+";"+db;  
  112.             var element=document.getElementById(torlendo);   
  113.             element.document.getElementById('origo').removeChild(element);   
  114.             db--;  
  115.         }  
  116.     }  
  117.   
  118. </script>  
  119. </head>  
  120.   
  121. <body>  
  122. <table >  
  123.     <form name="adatok">  
  124.     <tr>  
  125.     <td colspan=2 align="left" >Kezdőpont koordinátái:</td>  
  126.     </tr>  
  127.       
  128.     <tr>  
  129.     <td align="right" >x1:</td>  
  130.     <td align="left" ><input type="text" name="x1" size="2"></td>  
  131.     </tr>  
  132.   
  133.     <tr>  
  134.     <td align="right">y1:</td>  
  135.     <td align="left" ><input type="text" name="y1" size="2"></td>  
  136.     </tr>  
  137.   
  138.     <tr>  
  139.     <td colspan=2 align="left" >Végpont koordinátái:</td>  
  140.     </tr>  
  141.       
  142.     <tr>  
  143.     <td align="right" >x2:</td>  
  144.     <td align="left" ><input type="text" name="x2" size="2"></td>  
  145.     </tr>  
  146.   
  147.     <tr>  
  148.     <td align="right" >y2:</td>  
  149.     <td align="left" ><input type="text" name="y2" size="2"></td>  
  150.     </tr>  
  151.   
  152.     <tr>  
  153.     <td align="left" colspan=2><input type="button" name="ok" value="Mehet" onClick="rajzol(x1.value,y1.value,x2.value,y2.value)">   
  154.      <input type="button" name="torol" value="Töröl" onClick="kitorol()"></td>  
  155.   
  156.     </tr>  
  157.   
  158.     </form>  
  159. </table>  
  160. <div ID='tabla' style="position:absolute;left:200px;top:100px;">  
  161.   
  162. <div ID="pontok" style="position:absolute;left:420px;top:0px;width:110px;height:370px;overflow:auto;">  
  163.     <p align="left"><b>Pontok:</b></p>  
  164. </div>  
  165.   
  166. <div  ID="koordinatarendszer" style="position:absolute;left:0px;top:0px;width:400px;height:400px;border: 2px ridge white;overflow:hidden;">  
  167.       
  168.     <div ID="origo" style="position:absolute;left:200px;top:200px;width:1px;height:1px;background-color:#000000;">  
  169.         <sup>&nbsp;0</sup>  
  170.         <div style="position:absolute;left:-200px;top:0px;width:400px;height:1px;background-color:#000000;text-align:right">  
  171.         <sup>&nbsp;x</sup>  
  172.         </div>  
  173.         <div style="position:absolute;left:0px;top:-200px;width:1px;height:400px;background-color:#000000;">  
  174.         <sup>&nbsp;y</sup>  
  175.         </div>  
  176.     </div>  
  177. </div>  
  178. </body>  
  179. </html>  
előre is köszi
 
1

Kétoldalú erőfestítés

vbence · 2009. Május. 12. (K), 10.00
Nem ártana egy kis leírás az elején, hogy mi is a működési elv, valamint bő kommentezés, hogy ehhez kedvem legyen nekiállni...
2

Kódolás

Poetro · 2009. Május. 12. (K), 10.57
  1. Használj valid HTML kódot.
  2. Generáláskor használj valid HTML elem tulajdonságokat.
  3. Debugolj Firebuggal, vagy más hasonló eszközzel, hogy lásd mit próbálsz meg törölni, és mi van a DOM-ban.
  4. Ha hibát jelentesz, akkor írd meg, mi volt a pontos hiba.
  5. Használj CSSt a redundáns kód elkerülésére.
  6. HTML-ben ne használj, ha lehet onClick stb. eseményeket, mert az a JavaScriptbe tartozik, legyen is ott.
  7. Formázd, és kommentezd a kódodat, hogy ne csak te, hanem mások is olvasni tudják. Neked is hasznos lesz pár hónap múlva, ha valamiért elő kell venni a kódot.
  8. Ne használj globális változókat, inkább egy objektumot az összes függvényre és változóra, ami egy dologhoz kapcsolódik.
  9. Lokális változók deklarációjánál pedig használd a var kulcsszót. (például most a db-ről nem derült ki, hogy lokális vagy globális.)
  1. var i = 1;  
  2.   
  3. function rajzol(x1, y1, x2, y2) {  
  4.   
  5.   var p0, px, A, B, p;  
  6.   r = Math.round(Math.random() * 250 + 1);  
  7.   g = Math.round(Math.random() * 250 + 1);  
  8.   b = Math.round(Math.random() * 250 + 1);  
  9.   szin = "rgb(" + r + "," + g + "," + b + ")";  
  10.   
  11.   p0 = document.createElement('DIV');  
  12.   p0.setAttribute('id''p0' + i);  
  13.   p0.setAttribute('style''position:absolute;left:' + (parseInt(x1) - 2.5) + 'px;top:' + (parseInt(y1) - 2.5) * ( - 1) + 'px;width:5px;height:5px;background-color:' + szin + ';');  
  14.   p0.appendChild(document.createTextNode('P' + i));  
  15.   document.getElementById('origo').appendChild(p0);  
  16.   br = document.createElement('BR');  
  17.   
  18.   Padat = document.createElement('DIV');  
  19.   Padat.setAttribute('id''Padat' + i);  
  20.   Padat.appendChild(document.createTextNode('P' + i + '(' + x1 + ';' + y1 + ')'));  
  21.   Padat.appendChild(br);  
  22.   document.getElementById('pontok').appendChild(Padat);  
  23.   
  24.   px = document.createElement('DIV');  
  25.   px.setAttribute('id''px' + i);  
  26.   px.setAttribute('style''position:absolute;left:' + (parseInt(x2) - 2.5) + 'px;top:' + (parseInt(y2) - 2.5) * ( - 1) + 'px;width:5px;height:5px;background-color:' + szin + ';');  
  27.   px.appendChild(document.createTextNode('P' + (i + 1)));  
  28.   document.getElementById('origo').appendChild(px);  
  29.   br = document.createElement('BR');  
  30.   
  31.   Padat = document.createElement('DIV');  
  32.   Padat.setAttribute('id''Padat' + i + 1);  
  33.   Padat.appendChild(document.createTextNode('P' + (i + 1) + '(' + x2 + ';' + y2 + ')'));  
  34.   Padat.appendChild(br);  
  35.   document.getElementById('pontok').appendChild(Padat);  
  36.   line = document.createElement('HR');  
  37.   line.setAttribute('style''width:80px;height:1px;');  
  38.   document.getElementById('pontok').appendChild(line);  
  39.   i = i + 2;  
  40.   
  41.   A = (parseInt(y2) - parseInt(y1)) * ( - 1);  
  42.   B = parseInt(x2) - parseInt(x1);  
  43.   
  44.   db = 1;  
  45.   if (parseInt(y1) > parseInt(y2)) {  
  46.     for (var y = parseInt(y2); y <= parseInt(y1); y = y + 0.1) {  
  47.       x = (A * parseInt(x1) + B * parseInt(y1) - B * y) / A;  
  48.       p = document.createElement('DIV');  
  49.       p.setAttribute('id''p' + i + '-' + db);  
  50.       p.setAttribute('style''position:absolute;left:' + x + 'px;top:' + (y * ( - 1) + 4) + 'px;width:2px;height:2px;background-color:' + szin + ';');  
  51.       document.getElementById('origo').appendChild(p);  
  52.       db++;  
  53.   
  54.     }  
  55.   }  
  56.   
  57.   if (parseInt(y1) < parseInt(y2)) {  
  58.     for (var y = parseInt(y1); y <= parseInt(y2); y = y + 0.1) {  
  59.       x = (A * parseInt(x1) + B * parseInt(y1) - B * y) / A;  
  60.       p = document.createElement('DIV');  
  61.       p.setAttribute('id''p' + i + '-' + db);  
  62.       p.setAttribute('style''position:absolute;left:' + x + 'px;top:' + (y * ( - 1) + 4) + 'px;width:2px;height:2px;background-color:' + szin + ';');  
  63.       document.getElementById('origo').appendChild(p);  
  64.       db++;  
  65.     }  
  66.   }  
  67.   
  68.   if (parseInt(y1) == parseInt(y2)) {  
  69.     if (parseInt(x1) < parseInt(x2)) {  
  70.       for (var x = parseInt(x1); x <= parseInt(x2); x++) {  
  71.         p = document.createElement('DIV');  
  72.         p.setAttribute('id''p' + i + '-' + db);  
  73.         p.setAttribute('style''position:absolute;left:' + x + 'px;top:' + (parseInt(y1) * ( - 1) + 4) + 'px;width:2px;height:2px;background-color:' + szin + ';');  
  74.         document.getElementById('origo').appendChild(p);  
  75.         db++;  
  76.       }  
  77.     }  
  78.     else {  
  79.       for (var x = parseInt(x2); x <= parseInt(x1); x++) {  
  80.         p = document.createElement('DIV');  
  81.         p.setAttribute('id''p' + i + '-' + db);  
  82.         p.setAttribute('style''position:absolute;left:' + x + 'px;top:' + (parseInt(y1) * ( - 1) + 4) + 'px;width:2px;height:2px;background-color:' + szin + ';');  
  83.         document.getElementById('origo').appendChild(p);  
  84.         db++;  
  85.       }  
  86.   
  87.     }  
  88.   }  
  89. }  
  90.   
  91. function kitorol() {  
  92.   for (var j = db-1; j > 0; j--) {  
  93.     var torlendo = "p" + i + "-" + j;  
  94.     var element = document.getElementById(torlendo);  
  95.     document.getElementById('origo').removeChild(element);  
  96.     db--;  
  97.   }  
  98. }