Jump to content
php.lv forumi

getElementBy.......


klavsr

Recommended Posts

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

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

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

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

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

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

  • 3 weeks later...

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 by Kaitnieks
Link to comment
Share on other sites

×
×
  • Create New...