Avatar billede mads1987 Nybegynder
16. august 2006 - 23:40 Der er 9 kommentarer og
1 løsning

Udforning af javascript

Jeg har brug for lidt hjælp til udformingen af et javascript. Jeg har ideen, men ikke evnerne til at kode det. Håben en kan hjælpe.

Jeg forestiller mig at jeg har et array med x antal navne, f.eks.:

Array = [Mads,John,Rikke]

Dette array skal skrives ud som en select. (Noget med en løkke som skriver alle navnene fra arrayet ud).Altså:

<select>
<option>Mads</option>
<option>John</option>
<option>Rikke</option>
</select>

Et af navnene skal være angivet som valgt i javascriptet

var valgt = Mads;

Og dette navn skal så være selected som følger:

<select>
<option selected>Mads</option>
<option>John</option>
<option>Rikke</option>
</select>

Kan dette lade sig gøre?

Med venlig hilsen
Mads
Avatar billede mclemens Nybegynder
17. august 2006 - 00:05 #1
Ja, det kan det :)





... men her er lige et eksempel også :o)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
navne=["Mads","John","Rikke"];
window.onload=function(){
  tmp1=document.createElement("select");
  for(i in navne){
    tmp2=document.createElement("option");
    tmp3=document.createTextNode(navne[i]);
    tmp2.appendChild(tmp3);
    tmp1.appendChild(tmp2);
  }
  document.body.appendChild(tmp1);
}
</script>

</head><body>

</body></html>
Avatar billede mclemens Nybegynder
17. august 2006 - 00:05 #2
Ups, to sekunder :P
Avatar billede mclemens Nybegynder
17. august 2006 - 00:06 #3
Glemte det med selected :D




<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type"

content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
navne=["Mads","John","Rikke"];
valgt="John";

window.onload=function(){
  tmp1=document.createElement("select");
  for(i in navne){
    tmp2=document.createElement("option");
    tmp3=document.createTextNode(navne[i]);
    if(navne[i]==valgt)tmp2.selected="selected";
    tmp2.appendChild(tmp3);
    tmp1.appendChild(tmp2);
  }
  document.body.appendChild(tmp1);
}
</script>

</head><body>

</body></html>
Avatar billede mclemens Nybegynder
17. august 2006 - 00:08 #4
Med speciel append position...



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type"

content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
navne=["Mads","John","Rikke"];
valgt="John";

window.onload=function(){
  tmp1=document.createElement("select");
  for(i in navne){
    tmp2=document.createElement("option");
    tmp3=document.createTextNode(navne[i]);
    if(navne[i]==valgt)tmp2.selected="selected";
    tmp2.appendChild(tmp3);
    tmp1.appendChild(tmp2);
  }
  document.getElementById("apppos").appendChild(tmp1);
}
</script>

</head><body>
<br><br><br><br><br><br><br><br><br><br>
<div id="apppos"></div>
<br><br><br><br><br><br><br><br><br><br>
</body></html>
Avatar billede mads1987 Nybegynder
17. august 2006 - 00:30 #5
Mange tak! Det var lige hvad jeg manglede!
Avatar billede mclemens Nybegynder
17. august 2006 - 00:32 #6
Velbekom, og tak for point :o) ... Du skal nok også lige have
kastet en name på den - men her følger IE ikke standarden ... tmp1.setAttribute("name","navnetpaaselect");
... jeg roder lige selv lidt med det og [censureret] lidt ...
- skal nok kaste lidt herind ... men ellers er linket her: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/name_2.asp
Avatar billede mclemens Nybegynder
17. august 2006 - 00:46 #7
Sådan... hvis du skal bruge name i et object (et tag) kan du bruge elmcreation - det er en function jeg har tilknyttet document objectet og kaldes derfor ligesom createElement, men den tager dog hensyn til om det er Buggy Woggie IE eller Salsa Firefox...




<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta

http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
navne=["Mads","John","Rikke"];
valgt="John";

IE=((document.all)&&(navigator.userAgent.indexOf('Opera')== -1))?true:false;

window.onload=function(){
  tmp1=document.elmcreation("select","selectnavn");
  for(i in navne){
    tmp2=document.createElement("option");
    tmp3=document.createTextNode(navne[i]);
    if(navne[i]==valgt)tmp2.selected="selected";
    tmp2.appendChild(tmp3);
    tmp1.appendChild(tmp2);
  }
  document.getElementById("apppos").appendChild(tmp1);

alert(document.body.innerHTML); // Fjern lige denne linje senere

}



document["elmcreation"]=function(tag,name){
  if(name){
    if(IE)tmp=document.createElement("<"+tag+" name="+name+"></"+tag+">");
    else{
      tmp=document.createElement(tag);tmp.setAttribute("name",name);
    }
  }else tmp=document.createElement(tag);
  return tmp;
}

</script>

</head><body>
<br><br><br><br><br><br><br><br><br><br>
<div id="apppos"></div>
<br><br><br><br><br><br><br><br><br><br>
</body></html>








document["elmcreation"]=function(tag,name){ // Tildeler en funktion til document objectet
  if(name){ /* hvis navn er defineret bruges denne del - tag skal defineres ... altså minimum envariabel=document.elmcreation("div"); f.eks. ellers så envariabel=document.elmcreation("input","navnpaainput"); f.eks. */
    if(IE)tmp=document.createElement("<"+tag+" name="+name+"></"+tag+">"); // Hvis det er IE skal der danses Buggy Woogie
    else{
      tmp=document.createElement(tag);tmp.setAttribute("name",name); // Hvis det er Firefox eller anden browser danses lidt mere elegant Salsa
    }
  }else tmp=document.createElement(tag); // Hvis name ikke er defineret køres createElement på normal vis - hvis man nu glemmer createElement i en kodning og kommer til at bruge elmcreation
  return tmp; // Returnerer objectet der er oprettet til variablen så tildelingen gennemføres
}





... Håber dokumentationen er ok :o)
Avatar billede mclemens Nybegynder
17. august 2006 - 00:46 #8
... Og tak for spørgsmålet samtidig med point ...
- Jeg lærte også lige noget her :o)
Avatar billede mclemens Nybegynder
17. august 2006 - 00:50 #9
Hvis funktionen ikke skal tage hensyn til at
den også kan benyttes med og uden name skal den se sådan her ud:
(så skal man bare huske at bruge createElement når man ikke skal bruge name)


document["elmcreation"]=function(tag,name){
  if(IE)tmp=document.createElement("<"+tag+" name="+name+"></"+tag+">");
  else{tmp=document.createElement(tag);tmp.setAttribute("name",name);}
  return tmp;
}

... den linje jeg satte lidt længere oppe
( IE=((document.all)&&(navigator.userAgent.indexOf('Opera')== -1))?true:false; )
- Skal stadig bruges ... den måler om det er IE der bruges ... Opera understøtter
nemlig også document.all derfor skal vi lige kigge efter om det er en Opera browser
Avatar billede mclemens Nybegynder
31. august 2006 - 14:28 #10
en lille rettelse:
document["elmcreation"]=function(tag,name){
rettes til:
window["elmcreation"]=function(tag,name){

og

document.elmcreation
rettes til
window.elmcreation
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester