Avatar billede oergaard Nybegynder
17. juni 2007 - 09:57 Der er 18 kommentarer og
2 løsninger

Dynamisk oprettelse af knapper

Med nedenstående funktion ønsker jeg at oprette det antal knapper jeg angiver i mit kald, men kan ikke få det til at virke. Nogen der kan hjælpe?

function opretKnap(sMenu,aKnap) {
  for(var i = 0; i < aKnap.length; i++) {
  var oKnap = document.createElement('img');
  oKnap.src = aKnap[i][0];
}

Jeg kalder funktionen som følgende:
fopretKnap= new opretKnap("Menu", ["Knap1.png", "Handling1"], ["Knap2.png", "Handling2"])
Avatar billede loevgaard Praktikant
17. juni 2007 - 12:22 #1
1. Når du har created dit element, så tilføjer du det ikke til noget eksisterende element.
2. fopretKnap= new opretKnap: Din funktion returnerer ikke noget, og det er ikke et objekt.
3. Din funktion tager to parametre og du giver tre med...
Avatar billede loevgaard Praktikant
17. juni 2007 - 12:27 #2
Lad os sige du vil tilføje et billede til en div, det gøres sådan her (hæng mig ikke op på detaljerne, det er ren frihånd ;)):

<div id="div"></div>

<script>
function addImage(imageSrc) {
  var img = document.createElement('img');
  img.src = imageSrc;
  document.getElementById('div').appendChild(img);
}
</script>

Vi opretter først et img-element, sætter sourcen til parameteren vi har medsendt, og så tilføjer vi billedet til et eksisterende element, nemlig div'en.
Avatar billede oergaard Nybegynder
17. juni 2007 - 12:38 #3
Kan du uddybe?
Avatar billede oergaard Nybegynder
17. juni 2007 - 12:39 #4
Glem min sidste kommentar, havde ikke set, at du have gjort det. :-)
Avatar billede loevgaard Praktikant
17. juni 2007 - 12:53 #5
Glemte at skrive, hvordan du så kørte funktionen:
<a href="#" onclick="addImage('billede1.png')">Tilføj billede1.png</a>
Avatar billede oergaard Nybegynder
17. juni 2007 - 13:09 #6
Jeg har tilrettet min kode som du siger og det virker næsten perfekt. Det sidste problem er det du skriver om i pkt. 3.
Det er meningen at aKnap skal være et 2D array - 1. del med src. og 2. del med handling.
Avatar billede loevgaard Praktikant
17. juni 2007 - 15:19 #7
Ved ikke helt, hvad du mener, men tror du mener noget i retning af sådan et array her:

arr = new Array(['src1', 'handling1'], ['src2', 'handling2']);
Avatar billede oergaard Nybegynder
17. juni 2007 - 15:29 #8
Du skriver i pkt. 3, at min funktion tager to parametre, men at jeg sender tre. Den tredje parameter er 2. del af mit Array.

Jeg ser om jeg kan få det til at virke med det du skriver
Avatar billede oergaard Nybegynder
17. juni 2007 - 15:41 #9
Jeg manglede en kantetparentes omkring hele arrayet.

fopretKnap= new opretKnap("Menu", [["Knap1.png", "Handling1"], ["Knap2.png", "Handling2"]])
Avatar billede roenving Novice
18. juni 2007 - 01:11 #10
Hvad er Handling1 og Handling2 ?-)
Avatar billede oergaard Nybegynder
18. juni 2007 - 20:46 #11
Handling1 = Bold & Handling2 = Italic
Avatar billede oergaard Nybegynder
20. juni 2007 - 09:32 #12
Jeg har fået til at virke dog på en lidt anden måde.

I stedet for at smide en 2D array over i funktionen, kalder jeg knapperne det samme som handlingen, hvorfor jeg kan trække handlingen ud af knappens navn.
Avatar billede oergaard Nybegynder
20. juni 2007 - 09:34 #13
Dog har jeg fortsat et lille problem med funktionen.

De tre første knapper er, Bold, Italic og Underline. Herefter kommer der tre nye knapper. Jeg ønsker et mellemtum mellem de to sæt knapper ala &nbsp.
Avatar billede oergaard Nybegynder
20. juni 2007 - 14:28 #14
Med følgende kode opretter jeg mine knapper:
function addKnap(sMenu,sEditor,aKnapper) {           
  for (var i = 0; i < aKnapper.length; i++) {
    var knap = document.createElement('img');
    knap.src = "knapper/" + aKnapper[i] + ".png";
    knap.action = aKnapper[i];
    document.getElementById(sMenu).appendChild(knap);
    // Tilføj events
    knap.attachEvent('onclick', function(){apply(sEditor,knap.action);});
  }   
}

Med ovenstående får jeg samme action på alle mine knapper.

For god ordens skyld kan jeg lige nævne at jeg kalder funktionen som følgende:
addKnap('menu','wysiwyg',['Bold','Italic','Underline']);

Håber der er nogen der kan hjælpe.
Avatar billede oergaard Nybegynder
20. juni 2007 - 14:48 #15
På adressen www.thorup-oergaard.dk/pl/wysiwyg.asp kan I se et eks. hvor jeg opretter knapperne en efter en.

www.thorup-oergaard.dk/pl/wysiwyg2.asp kan I se et eks. hvor jeg opretter knapperne i blokke.

Jeg ønsker at oprette mine knapper i blokke eller evt på en gang.
Avatar billede oergaard Nybegynder
26. juli 2007 - 17:32 #16
Jeg kan fortsat ikke få det til at virke. :-(

0vgaard og roenving smid et svar hver, så kan i dele pointene :-)
Avatar billede loevgaard Praktikant
26. juli 2007 - 20:04 #17
ok :)
Avatar billede roenving Novice
27. juli 2007 - 17:21 #18
Oki '-)
Avatar billede oergaard Nybegynder
27. juli 2007 - 20:20 #19
Tak for deltagelsen :-)
Avatar billede roenving Novice
06. august 2007 - 16:03 #20
-- og tak for point ;~}
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