klavsr Posted January 4, 2009 Report 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?
bubu Posted January 4, 2009 Report 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.
mad182 Posted January 4, 2009 Report 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...
klavsr Posted January 4, 2009 Author Report 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
bubu Posted January 4, 2009 Report 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 ;)
klavsr Posted January 4, 2009 Author Report 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>
bubu Posted January 4, 2009 Report Posted January 4, 2009 Nu man nekas nepazūd: http://paste.php.lv/93336f28760d13524b7955...ang=html4strict
indoom Posted January 5, 2009 Report 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".
klavsr Posted January 6, 2009 Author Report 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?
bubu Posted January 6, 2009 Report 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>
klavsr Posted January 26, 2009 Author Report 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.
bubu Posted January 26, 2009 Report Posted January 26, 2009 Droši vien. Pasaki kur ir problēma (ar kādu JS debugeri).
klavsr Posted January 30, 2009 Author Report 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?
Kaitnieks Posted January 30, 2009 Report 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
Recommended Posts