01. februar 2006 - 10:06Der er
4 kommentarer og 1 løsning
Valg i dropdownboks skal ændre tekst i tekstboks m.m.
Hej,
Jeg er klar over, at der har været skrevet en del om dette herinde, men jeg har ledt uden held, og er nybegynder inden for java script, så skal have det skåret ud i pap...
Det jeg gerne vil, er at have en drop-down boks hvor der står en række Navne (Aaa, Bbb og Ccc). Når man så vælger eksempelvis Aaa i dropdownboksen kunne jeg godt tænke mig, at der sker følgende:
1) I en tekstboks skal Aaa's adresse vises "Avej 8, 2100 Kbh Ø, E-mail: Aaa@a.dk"
2) Der skal vises i et billede med Aaa's logo.
3) Der ud over skal der være et textarea, hvor man kan skrive en besked. Når man trykker send skal "mailto" være sat til den e-mailadresse der bliver vist i tekstboksen (Aaa@a.dk).
<head> <script type="text/javascript"> var data = { o1:{navn:'Navn 1',adresse:'Vej 1',billede:'billede1.jpg',email:'mail1@bruger.dk'}, o2:{navn:'Navn 2',adresse:'Vej 2',billede:'billede2.jpg',email:'mail2@bruger.dk'}, o3:{navn:'Navn 3',adresse:'Vej 3',billede:'billede3.jpg',email:'mail3@bruger.dk'}, o4:{navn:'Navn 4',adresse:'Vej 4',billede:'billede4.jpg',email:'mail4@bruger.dk'} }; function visOplysninger(obj) { // udfør kun indsættelse af data hvis der er valgt en bruger i listen if(obj && obj.value != '') { var f = obj.form; var brugerdata = data[obj.value]; f.adresse.value = brugerdata.adresse + ', e-mail: ' + brugerdata.email; document.getElementById("profil").src = brugerdata.billede; document.getElementById("email").href = 'mailto:' + brugerdata.email; document.getElementById("email").innerHTML = 'Send en mail til ' + brugerdata.navn; } } </script> </head>
var data = { o1:{navn:'Navn 1',adresse:'Vej 1',billede:'billede1.jpg',email:'mail1@bruger.dk'}, o2:{navn:'Navn 2',adresse:'Vej 2',billede:'billede2.jpg',email:'mail2@bruger.dk'}, o3:{navn:'Navn 3',adresse:'Vej 3',billede:'billede3.jpg',email:'mail3@bruger.dk'}, o4:{navn:'Navn 4',adresse:'Vej 4',billede:'billede4.jpg',email:'mail4@bruger.dk'} };
Denne blok definerer et objekt, hvor du kan referere egenskaberne via navne, på samme måde som når du bruger så mange andre objekter med dot-notation (f.eks. vil data.o1.navn returnere teksten 'Navn 1' osv.). Navngivning af egenskaber i objektet er i princippet frie, sålænge du holder dig indenfor reglerne for navngivning af identifiers i javascript :)
function visOplysninger(obj) { // udfør kun indsættelse af data hvis der er valgt en bruger i listen if(obj && obj.value != '') { var f = obj.form; var brugerdata = data[obj.value]; f.adresse.value = brugerdata.adresse + ', e-mail: ' + brugerdata.email; document.getElementById("profil").src = brugerdata.billede; document.getElementById("email").href = 'mailto:' + brugerdata.email; document.getElementById("email").innerHTML = 'Send en mail til ' + brugerdata.navn; } }
Denne funktion modtager det dropdown-listen (select-element), hvorfra valget bliver foretaget og aflæser på grundlag af valget i dropdown-listen, det objekt i data som er angivet i option-elementets value, hvilket sker i denne linie:
var brugerdata = data[obj.value];
Med den enkelte brugers data i hånden kan vi så bare aflæse værdierne og indsætte dem i de objekter hvor de hører til (hvilket sker i de sidste 4 linie af funktionen).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.