Mads Brinch <de_fire@hotmail.com> writes:
> jeg har siddet og prøvet at få et lille script til at virke og må
> indrømme jeg ikke er nogen ørn til java...
>
> scriptet skal indsætte noget tekst i hver sin form efter man har
> valg en ting...
>
> her er min kode
> <center>
> <form name="combowithtext">
Jeg vil anbefale "id" frem for "name":
<form id="combowithtext">
> <select name="t3" size="1" onChange="showtext()">
Her kan man spare mange mellemregninger ved at sende elementet
selv med til showtext. I.e.,
<select name="t3" size="1" onChange="showtext(this);">
> <option selected="selected">Menneske</option>
Pah, hvorfor skal de altid være default?! :)
> <option>Elver</option>
> <option>Dværg</option>
> <option>Ork</option>
> <option>Goblin</option>
> <option>Trold</option>
> </select>
>
> <label>HP:</label> <input type="tekst" name="t4"><br/>
Typen "tekst" skal være "text".
Label-elementet er bedre brugt hvis man linker det til feltet
det er label for. E.g.:
<label for="t4id">HP:</label> <input type="text" id="t4id" name="t4"><br>
Du har en / i <br/>. Det er kun relevant hvis din side er XHTML. Det
er der ingen grund til at den skal være, bare brug HTML.
Hvis den er XHTML, så skal "onChange" ovenfor være "onchange", da
XHTML gør forskel på store og små bogstaver.
> <label>NP:</label> <input type="tekst" name="t5"><br/>
Ditto her.
> <script language="javascript">
Language-attributten er unødvendig, og type-attributten er påkrævet,
så på med den:
<script type="text/javascript">
> var shortcut=document.combowithtext
Kan spares væk hvis showtext får et form-element med.
Ellers foretrækker jeg at skrive det helt ud:
var shortcut = document.forms["combowithtext"].elements;
> var descriptions=new Array()
>
> //extend this list if neccessary to accomodate more selections
> descriptions[0]="testa"
> descriptions[1]="testb"
> descriptions[2]="testc"
> descriptions[3]="testd"
> descriptions[4]="teste"
> descriptions[5]="testf"
Kan skrives kortere som:
var descriptions = ["testa", "testb", "testc", "testd", "teste", "testf"];
> shortcut.t4.value=descriptions[shortcut.t3.selectedIndex]
evt.
shortcut["t4"].value = descriptions[shortcut["t3"].selectedIndex];
> function showtext(){
> shortcut.t4.value=descriptions[shortcut.t3.selectedIndex]
> }
Hvis du får select-elementet med, så kan det skrives som:
function showtext(select) {
select.form.elements["t3"].value = descriptions[select.selectedIndex];
}
> var shortcut=document.combowithtext
> var descriptions=new Array()
>
> //extend this list if neccessary to accomodate more selections
> descriptions[0]="test1"
> descriptions[1]="test2"
> descriptions[2]="test3"
> descriptions[3]="test4"
> descriptions[4]="test5"
> descriptions[5]="test6"
Her gentager du så samme kode igen. Det overskriver det eksisterende
array i descriptions.
>
> shortcut.t5.value=descriptions[shortcut.t3.selectedIndex]
>
> function showtext(){
> shortcut.t5.value=descriptions[shortcut.t3.selectedIndex]
> }
Og her overskrives showtext-funktionen. Der kan kun være en global
funktion med det navn, så det er kun den sidste der virker.
Du siger ikke hvad der er galt, så jeg vil vove at gætte at
det kun er et af felterne der bliver opdateret.
Du kan ikke bare kopiere Javascript kode og genbruge navnene.
Prøv i stedet.
<script type="text/javascript">
var hpDescriptions = ["test1","test2","test3","test4","test5","test6"];
var npDescriptions = ["testA","testB","testC","testD","testE","testF"];
function showtext(select) {
var index = select.selectedIndex;
var elems = select.form.elements;
elems["t4"].value = hpDescriptions[index];
elems["t5"].value = npDescriptions[index];
}
// Initialize values.
showtext(document.forms["combowithtext"].elements["t3"]);
</script>
/L
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'