| 
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
 | 
 | 
| autor | 
 | 
andrusny 
Kreisi kasutaja 
 
  
liitunud: 20.03.2006 
 
 
 
 
  | 
 
11.04.2010 21:51:49
Veateated JavaScript | 
    
 | 
 
  | 
 
Debugisin 1stJavaScript Editoris üht JS tehtud koodi, kood iseenesest töötab ja eelnevalt pole saanud ühtegi veateadet teistelt editoridelt. Nüüd annab reale
 
	
	  | lingid = document.body.getElementsByTagName('a');  | 
 
 
 
teateks Incompatible types tähendaks nagu sobimatu tüüp vms.
 
Oskab keegi öelda milles on viga?
 _________________
   | 
 
  | 
	
		
			
			
				| Kommentaarid: 7 loe/lisa | 
				Kasutajad arvavad: | 
				    | 
				 :: | 
				  0 :: | 
				  0 :: | 
				  7 | 
			 
			 
		 | 
	
| tagasi üles | 
 | 
  | 
Redikate 
HV veteran 
 
  
liitunud: 30.12.2005 
 
 
 
 
  | 
 
12.04.2010 18:26:22
 | 
    
 | 
 
  | 
 
Kas viga mitte ei või tulla sellest, et muutuja "lingid" pole määratud sul vastavaks tüübiks milleks siis antud juhul oleks minu arusaamist mööda massiiv.
 
 
Kahjuks ei tunne eriti javascripti, kuid  äkki midagi sellist:
 
	
	  var lingid = new Array();
 
lingid = document.body.getElementsByTagName('a');
 
 
// ja esimesele lingile pääseb ligi nii
 
document.write(lingid[0]);
 
 
// ja teisele nii jne....
 
document.write(lingid[1]);
 
 | 
 
 
 
 
Võimalik, et Sind võib päästa ka lihtne "var"
 
	
	  
 
var lingid = document.body.getElementsByTagName('a');
 
 | 
 
 
 _________________ http://nodejs.org/
 
"I'm also a person. Programming is just one thing I do." | 
 
  | 
	
		
			
			
				| Kommentaarid: 34 loe/lisa | 
				Kasutajad arvavad: | 
				    | 
				 :: | 
				  0 :: | 
				  0 :: | 
				  33 | 
			 
			 
		 | 
	
| tagasi üles | 
 | 
  | 
andrusny 
Kreisi kasutaja 
 
  
liitunud: 20.03.2006 
 
 
 
 
  | 
 
12.04.2010 19:26:17
 | 
    
 | 
 
  | 
 
Kahjuks on kõik need variandid juba proovitud ja veateade jääb samaks.
 
Üldjuhul tekib see uus array ka niisama, ilma, et seda peaks eelnevalt deklareerima.
 
 
Väga võimalik, et tegu on ka lihtsalt selle editori bugiga (vähetõenäoline), kuna üheski teises pole mingit teadet ilmnenud. Täiesti jkuhuslikult sai see kood sinna visatud ja veateade avastatud. Kood iseenesest toimib.
 _________________
   | 
 
  | 
	
		
			
			
				| Kommentaarid: 7 loe/lisa | 
				Kasutajad arvavad: | 
				    | 
				 :: | 
				  0 :: | 
				  0 :: | 
				  7 | 
			 
			 
		 | 
	
| tagasi üles | 
 | 
  | 
nene 
Kreisi kasutaja 
 
  
liitunud: 20.03.2004 
 
 
 
 
  | 
 
19.04.2010 19:28:24
 | 
    
 | 
 
  | 
 
Antud koodilõigul JavaScripti seisukohast midagi viga pole. Arvatavasti tuleneb editori veateade siiski kontekstist - see koodirida ei eksisteeri sul ju uhkel üksinduses. Kui sa näitaksid näiteks kogu funktsiooni vms, mille sees see koodirida esineb, siis ehk oskaks midagi täpsemalt öelda.
 
 
Ainus, mida ma oskan hetkel oletada on see, et muutujat lingid kasutatakse eelnevas koodis ka mingil muul otstarbel. Näiteks omistatakse talle mingit muud tüüpi väärtus kui NodeList, mille getElementsByTagName() tagastab. JavaScripti jaoks pole vahet, mitut erinevat tüüpi väärtusi sa muutujale omistad, aga peetakse heaks praktikaks (ja mitte ainult JavaScriptis) üht muutujat erinevate asjade jaoks mitte taaskasutada.
 _________________ Mõistus otsas? Pane pinusse... | 
 
  | 
	
		
			
			
				| Kommentaarid: 24 loe/lisa | 
				Kasutajad arvavad: | 
				    | 
				 :: | 
				  0 :: | 
				  1 :: | 
				  23 | 
			 
			 
		 | 
	
| tagasi üles | 
 | 
  | 
andrusny 
Kreisi kasutaja 
 
  
liitunud: 20.03.2006 
 
 
 
 
  | 
 
19.04.2010 20:28:06
 | 
    
 | 
 
  | 
 
Panen siis kogu koodi, mida katsetasin. Eesmärk siis kaotada need lingid, mille sees on etteantud string. Eesmärgi täidab.
 
 
	
	  <a href="http://www.neti.ee/cgi-bin/teema/RIIK_JA_YHISKOND/Regioonid/">1</a><br> 
 
<a href="http://www.muffimaania.pri.ee/cgi-bin/teema/RIIK_JA_YHISKOND/Regioonid/">2</a><br> 
 
<a href="www.ordi.pri.ee">3Muffimaania</a><br> 
 
<a href="http://www.neti.ee/RIIK_JA_YHISKOND/Regioonid/">4</a><br> 
 
<a href="http://www.neti.ee/RIIK_JA_YHISKOND/Regioonid/">5</a><br> 
 
<a href="http://www.google.com/RIIK_JA_YHISKOND/Regioonid/">Google</a><br> 
 
 
<a href="http://www.neti.ee/RIIK_JA_YHISKOND/Regioonid/">7</a><br> 
 
 
<script> 
 
var keelatud = new Array("www.neti.ee", "muffimaania"); 
 
var lingid = document.getElementsByTagName('a'); 
 
for(i=0;i<lingid.length;i++){ 
 
         var href = lingid[i].href; 
 
            for(ii=0;ii<keelatud.length;ii++){ 
 
            if(href.lastIndexOf(keelatud[ii])!=-1){lingid[i].style.display = "none";} 
 
                                                                        } 
 
                                                      } 
 
                                                       
 
                                           
 
</script> | 
 
 
 _________________
   | 
 
  | 
	
		
			
			
				| Kommentaarid: 7 loe/lisa | 
				Kasutajad arvavad: | 
				    | 
				 :: | 
				  0 :: | 
				  0 :: | 
				  7 | 
			 
			 
		 | 
	
| tagasi üles | 
 | 
  | 
nene 
Kreisi kasutaja 
 
  
liitunud: 20.03.2004 
 
 
 
 
  | 
 
20.04.2010 13:30:54
 | 
    
 | 
 
  | 
 
Jah, ka siin ei paista midagi, mis toda veateadet tingiks. Kuid toon välja mõningased muud puudused:
 
 
		| javascript:
		 | 
	 
	
	  
// new Array() asemel soovitan kasutada [] var keelatud = ["www.neti.ee", "muffimaania"]; var lingid = document.getElementsByTagName('a'); // i eest puudu var, ilma selleta luuakse globaalne muutuja for (var i=0; i<lingid.length; i++) {   var href = lingid[i].href;   // for tsüklites on kombeks kasutada muutujaid i, j, k, ...   // see muidugi rohkem maitse asi, ammune Fortranist pärit traditsioon   for (var j=0; j<keelatud.length; j++) {     // Miks lastIndexOf()? lihtsalt indexOf() peaks piisama     // ning võrdlusteks soovitan rangemaid !== ja === operaatoreid     if (href.indexOf(keelatud[j]) !== -1) {       lingid[i].style.display = "none";     }   } } 
  
		 | 
	 
 
 _________________ Mõistus otsas? Pane pinusse... | 
 
  | 
	
		
			
			
				| Kommentaarid: 24 loe/lisa | 
				Kasutajad arvavad: | 
				    | 
				 :: | 
				  0 :: | 
				  1 :: | 
				  23 | 
			 
			 
		 | 
	
| tagasi üles | 
 | 
  | 
andrusny 
Kreisi kasutaja 
 
  
liitunud: 20.03.2006 
 
 
 
 
  | 
 
20.04.2010 16:34:55
 | 
    
 | 
 
  | 
 
	
	  | // new Array() asemel soovitan kasutada [] | 
 
 
 
 
Kas see teeb koodi kuidagi kiiremaks? Mis mõte on? Lihtsalt lühem kirjaviis?
 _________________
   | 
 
  | 
	
		
			
			
				| Kommentaarid: 7 loe/lisa | 
				Kasutajad arvavad: | 
				    | 
				 :: | 
				  0 :: | 
				  0 :: | 
				  7 | 
			 
			 
		 | 
	
| tagasi üles | 
 | 
  | 
nene 
Kreisi kasutaja 
 
  
liitunud: 20.03.2004 
 
 
 
 
  | 
 
20.04.2010 19:27:13
 | 
    
 | 
 
  | 
 
Peamiselt on see lühem ja mugavam kirjutada, aga new Array() kasutamine katkeb endas ka väikest veaohtu.
 
 
Näiteks järgmised kaks koodirida teevad täpselt ühte ja sama (loovad massiivi elementidega 1, 2, 3):
 
 
	
	  var a = new Array(1, 2, 3);
 
var b = [1, 2, 3]; | 
 
 
 
 
Kuid järgnevad väga sarnased koodiread teevad hoopis erinevaid asju:
 
 
	
	  var a = new Array(3);
 
var b = [3]; | 
 
 
 
 
Muutuja a väärtuseks saab nüüd hoopis tühi massiiv pikkusega 3.
 
 
Isiklikust JavaScripti kirjutamise kogemusest võin aga öelda, et mitte kunagi pole tarvis läinud massiivi suurust sedasi ette defineerida.
 _________________ Mõistus otsas? Pane pinusse... | 
 
  | 
	
		
			
			
				| Kommentaarid: 24 loe/lisa | 
				Kasutajad arvavad: | 
				    | 
				 :: | 
				  0 :: | 
				  1 :: | 
				  23 | 
			 
			 
		 | 
	
| tagasi üles | 
 | 
  | 
 | 
|  lisa lemmikuks | 
 | 
    | 
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
  |  
 
 |