Jump to content
php.lv forumi

Izvadīt html select objekta vērtību!


Sasa

Recommended Posts

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

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

Š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

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

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

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

×
×
  • Create New...