Sasa Posted January 14, 2008 Report Share Posted January 14, 2008 Ir lejupkrītošais <select> objekts. Nekādi ar JS nesanāk izvadīt selectoto vērtību, ja izmantoju value izvadāmais ir undefined, bet ja izmantoju innerHTML tad man zvadās pilnīgi viss select saturs ar visiem izvēlamajiem! Kā es ar alert varu izvadīt selecēto vērtību? Link to comment Share on other sites More sharing options...
andrisp Posted January 14, 2008 Report Share Posted January 14, 2008 Šis ir labs resurs, kad piemirstas: http://www.quirksmode.org/js/forms.html#value http://www.quirksmode.org/js/forms.html#sselect Tā kā value vajadzētu strādāt, bet tev vienkārši kods līks. No offence, protams. ;) Link to comment Share on other sites More sharing options...
GedroX Posted January 14, 2008 Report Share Posted January 14, 2008 Man jau liekās, ka value būtu jāstrādā. Cits variants ir izmantojot selectedIndex -- el.options[el.selectedIndex].value. Link to comment Share on other sites More sharing options...
marcis Posted January 14, 2008 Report Share Posted January 14, 2008 <select name="test" onchange="alert(this.value);"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> nestrādā? Link to comment Share on other sites More sharing options...
Sasa Posted January 14, 2008 Author Report Share Posted January 14, 2008 tiku galā! bet tikai es to selectu izveidoju izmantojot šito kā paraugu! http://www.rodsdot.com/ee/readFileClientSide.asp Link to comment Share on other sites More sharing options...
andrisp Posted January 14, 2008 Report Share Posted January 14, 2008 Tur taču parasts selekts, tikai atšķirība tāda, ka tiek ģenerēts JS pusē. Link to comment Share on other sites More sharing options...
Sasa Posted January 14, 2008 Author Report Share Posted January 14, 2008 ar to viss ir kārtība! bet tagad kā es varu savā selectā nerādīt dublējošos ieraksstus? Link to comment Share on other sites More sharing options...
andrisp Posted January 14, 2008 Report Share Posted January 14, 2008 Dati nāk datubāzes ? SELECT DISCTINT. Link to comment Share on other sites More sharing options...
Sasa Posted January 14, 2008 Author Report Share Posted January 14, 2008 dati nenāk no datu bāzes dati nāk no texta faila! Link to comment Share on other sites More sharing options...
Lynx Posted January 14, 2008 Report Share Posted January 14, 2008 Tad tev jataisa pašam kāds risinājums. Es nezinu kā ar performance, bet es darītu šādi: Noteikti tev katram ierakstam ir id, šo te id izvadot ierakstu liec iekšā array. Pēc tam katru nākamo ierakstu izvadot pārbaudi vai tā ieraksta id atrodas jau augstāk minētajā array. Ja neatrodas, izvadi un ieliec tikko izvadīta ieraksta id array, ja atrodas ej uz nākamo ierakstu. Link to comment Share on other sites More sharing options...
Sasa Posted January 15, 2008 Author Report Share Posted January 15, 2008 Šis kods man izveido sarakstu, ar ko man papildināt viņu, lai es neredzētu dublējošos ierakstus! function makeList() { if (xmlhttp.readyState==4) { if (xmlhttp.status==200) { var tmpArr=xmlhttp.responseText.split('\n'); var out='<select id=selekts name="states" size="1">'; var tmp; var val; var txt; for (var idx=1;idx<tmpArr.length;idx++) { tmp=tmpArr[idx].split(','); val = tmp[3].replace('"',''); val = val.replace('"',''); txt = tmp[3].replace('"',''); txt = txt.replace('"',''); out += '<option value="'+val+'">'+txt+'</option>'; } out += '</select>'; document.getElementById('theExample').innerHTML=out; } } } Link to comment Share on other sites More sharing options...
Aleksejs Posted January 15, 2008 Report Share Posted January 15, 2008 Varbūt ieliec outputu, ko saņem skripts no: var tmpArr=xmlhttp.responseText.split('\n'); Citādi baigi negribās iedziļināties, kā tas viss izskatās. Bet aptuvenā recepte - vispirms tajā for ciklā liec iekšā masīvā, pārbaudot, vai tāds val jau nav ielikts. Ja ir ielikts, tad izlaižam no masīva. Un pēc tam to masīvu sabāžam optionu listē. Link to comment Share on other sites More sharing options...
bubu Posted January 15, 2008 Report Share Posted January 15, 2008 Nevajag masīvā. Masīvs ir lēns - O(n). Vajag dictionarijā likt: var all = {}; for (var idx=1;idx<tmpArr.length;idx++) { var tmp=tmpArr[idx].split(','); var val = tmp[3].replace('"','').replace('"',''); var txt = txt = tmp[3].replace('"','').replace('"',''); all[val] = txt; } for (var val in all) { out += '<option value="'+val+'">'+all[val]+'</option>'; } Ja grib drusku ātrāku kodu (ar vienu ciklu), tad optionus var veidot uzreiz jau liekot all objektā to val vērtību. Tik tad gan jāpārbauda vai tur jau priekšā nav tā pati vērtība. Un vispār - HTML'u konkatenēt no stringiem nav smuki. Tam ir izdomātas DOM funkcijas (createElement, appendChild, ...) Link to comment Share on other sites More sharing options...
Sasa Posted January 15, 2008 Author Report Share Posted January 15, 2008 paldies! strādā kā nākas tagad! Bet nesaprotu dažas nianses: var all = {}; var txt = txt = tmp[3].replace('"','').replace('"',''); for (var val in all) all[val] = txt; Link to comment Share on other sites More sharing options...
bubu Posted January 15, 2008 Report Share Posted January 15, 2008 1) var all = {}; ir ekvivalents pierakstam var all = new Object(); 2) tur nokļūdījos kopējot tavu kodu. Pareizi jābūt šādi: var txt = tmp[3].replace('"','').replace('"',''); 3) parasts cikls pa visiem elementiem. Ekvivalents php ciklam foreach ($all as $val). 4) dictionary ir līdzīgs masīvam. Masīvam tu raksti masīvs[indekss] = vērtība. Un indekss var būt tikai vesels nenegatīvs skaitlis. Dictionarijam tiek rakstīts dict[atslēga] = vērtība, kur atslēga var būt jebkas - gan strings, gan integers, gan jebkurš objekts (JS, DOM, ...) Link to comment Share on other sites More sharing options...
Recommended Posts