Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
sõnum |
|
andrusny
Kreisi kasutaja
liitunud: 20.03.2006
|
11.04.2010 22: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 19: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 20: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 20: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 21: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 14: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 17: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 20: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
|
|