klavsr Posted January 4, 2009 Report Share Posted January 4, 2009 Vai ir iespējams elementu atrast pēc kaut kā cita, nevis ID ? Uzgāju šādu interesantu lietu: http://ryanfait.com/resources/custom-check...-radio-buttons/ Ar šo var dabūtu gatavu lai <select> kastīte izskatās kā pašam patīk, t.i. tiek lietota bilde. Šo lietojot, <select> pazaudē savu ID. Vai ir kādi varianti pēc kā vēl ar JavaScript es varētu atrast to select boxu? Link to comment Share on other sites More sharing options...
bubu Posted January 4, 2009 Report Share Posted January 4, 2009 Ko nozīmē - "pazaudē"? Apskaties DOM Inspectorā (firefoksī) vai jebkurā anloģiskā DOM koka attēlošanas tūlī - vai tiešām elementam ir "pazudis" id. Paši no sevis elementu atribūti nepazūd. Vai nu tu neesi tādu pielicis tur, vai arī esi manuāli izdzēsis to. Link to comment Share on other sites More sharing options...
mad182 Posted January 4, 2009 Report Share Posted January 4, 2009 Nesapratu, kur tas selekts pazuadē ID? Tas, ka redzams ir nevis selekts, bet spans ir cita lieta, bet ID kā tāds jau nekur nepazūd ne spanam, ne selektam... Link to comment Share on other sites More sharing options...
klavsr Posted January 4, 2009 Author Report Share Posted January 4, 2009 Apskatījos ar Firefox "Inspect" tūli, un izskatās tas šādi: <span id="selectnosaukums" class="select">-</span> <select class="styled" style="width: 109px;" name="nosaukums"> <option value="">-</option> <option value="RA-160">RA-160</option> </select> kā redzams, selectam vairs nav ID. Šeit ir JS kods kas liek to span ar bildi: http://ryanfait.com/resources/custom-check...orm-elements.js Link to comment Share on other sites More sharing options...
bubu Posted January 4, 2009 Report Share Posted January 4, 2009 Un kāds izskatās oriģinālais html kods, kuram tu pielieoto to JS kodu? Tur tiešām ir id atribūts? Es tev neticu, ka ir ;) Link to comment Share on other sites More sharing options...
klavsr Posted January 4, 2009 Author Report Share Posted January 4, 2009 Šāds :) <select id="nosaukums" name="nosaukums" style="width: 80px;" class="styled"> <option value="">-</option> <option value="1">RA-160</option></select> Link to comment Share on other sites More sharing options...
bubu Posted January 4, 2009 Report Share Posted January 4, 2009 Nu man nekas nepazūd: http://paste.php.lv/93336f28760d13524b7955...ang=html4strict Link to comment Share on other sites More sharing options...
indoom Posted January 5, 2009 Report Share Posted January 5, 2009 vai tad abos piemēros ir viens un tas pats select? Vienam optionos ir value="1" otram value="RA-160". To jau tas dotais skripts tiešām nedara. Arī id neaiztiek, vispār meklē tikai tos selectus, kam ir class="styled". Link to comment Share on other sites More sharing options...
klavsr Posted January 6, 2009 Author Report Share Posted January 6, 2009 Paldies visiem par entuziasmu un manas muļķības atrašanu, bet es tomēr netieku gudrs. <html> <head> <script type="text/javascript" src="http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/custom-form-elements.js"></script> <link rel="stylesheet" href="http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/form.css" media="screen"/> </head> <body> <select id="nosaukums" class="styled"> <option value="">-</option> <option value="opcijas vertiba">opcija</option> </select> <script type="text/javascript"> var selectmenu=document.getElementById("nosaukums"); selectmenu.onchange=function() { var chosenoption=this.options[this.selectedIndex] alert(chosenoption.value); } </script> </body> </html> Option'a vērtība tiek dabūta tikai ja ir noņemts class="styled". Kur šajā JS būtu kas jāmaina? Link to comment Share on other sites More sharing options...
bubu Posted January 6, 2009 Report Share Posted January 6, 2009 Onchange eventu tas javaskripts pārraksta ar savu (inputs[a].onchange = Custom.clear; ). Tāpēc tavs events nenostrādās nemaz. Ieliec tur kautvai vienu pašu pliku alert(1) un paskaties, ka neizleks tas alerts. Slikts skripts tas ir. Lai to apietu vai nu salabo to javaskriptu :) vai arī onchange eventa vietā lieto attachEvent vai addEventListener funkcijas: <script type="text/javascript"> var selectmenu=document.getElementById("nosaukums"); var f = function () { var chosenoption = this.options[this.selectedIndex]; alert(chosenoption.value); }; if (selectmenu.attachEvent) { selectmenu.attachEvent("onchange", f); } else { selectmenu.addEventListener("change", f, false); } </script> Link to comment Share on other sites More sharing options...
klavsr Posted January 6, 2009 Author Report Share Posted January 6, 2009 Paldies! :) Link to comment Share on other sites More sharing options...
klavsr Posted January 26, 2009 Author Report Share Posted January 26, 2009 bubu, vai ir iespējams šo pašu piedabūt darboties uz IE? Ar FF, Operu un Chrome nav problēmu. Link to comment Share on other sites More sharing options...
bubu Posted January 26, 2009 Report Share Posted January 26, 2009 Droši vien. Pasaki kur ir problēma (ar kādu JS debugeri). Link to comment Share on other sites More sharing options...
klavsr Posted January 30, 2009 Author Report Share Posted January 30, 2009 Viss, ko IE saka par kļūdu: Error: 'this.options' is null or not an object Errors parādās tieši kad izvēlas kādu selecta option'u. Tātad IE nesaprot "this.selectedIndex" - kā to varētu aizstāt? Link to comment Share on other sites More sharing options...
Kaitnieks Posted January 30, 2009 Report Share Posted January 30, 2009 (edited) Paskaties ar debugeri (http://www.microsoft.com/express/vwd/ - bezmaksas) un būs viegli redzēt problēmu. Problēma rodas tikai, ja tiek izmantots custom-form-elements.js, kura rezultātā "this" ir nevis SELECT, bet window elements. Ja izmantosi selectmenu, nevis this, tad ies. Gadījumā, ja neesmu sevi labi paskaidrojis: var f = function () { var chosenoption = selectmenu.options[selectmenu.selectedIndex]; alert(chosenoption.value); }; Edited January 30, 2009 by Kaitnieks Link to comment Share on other sites More sharing options...
Recommended Posts