Avatar billede sw_red_6 Nybegynder
31. august 2007 - 09:48 Der er 3 kommentarer og
1 løsning

udskifte checkboxe med img-tags

Jeg har følgende funktion som burde være i stand til at udskifte alle checkboxe, men det virker ikke helt som det er hensigten..

  function skift() {
    var inputfelter = document.getElementsByTagName('input');
    for(var i = 0; i<inputfelter.length; i++) {
      if(inputfelter[i].getAttribute('type')=='checkbox') {
        var parent = inputfelter[i].parentNode;
        var tekst = document.createTextNode(i+'\n');
        var test = parent.lastChild;
        var billede = document.createElement('p');
        billede.appendChild(tekst);
        parent.replaceChild(billede, test);
      }
    }
  }

Når jeg kører den i FF så skriver fejlkonsolen Fejl: inputfelter[i] has no properties

og når jeg kigger på side har den skiftet hver anden checkbox ud i stedet for hver eneste
Avatar billede olebole Juniormester
31. august 2007 - 16:40 #1
<ole>

Når det første input er udskiftet - lad os sige ved i=0 - så tager du i=1, men det er jo det tredie input i den originale liste ... nu, da du har fjernet det første element  ;o)

Skift i stedet ud bagfra:

  function skift() {
    var inputfelter = document.getElementsByTagName('input');
    for(var i = inputfelter.length; i>0; i--) { //  <-- Da magic lies here  ;o)
      if(inputfelter[i].getAttribute('type')=='checkbox') {
        var parent = inputfelter[i].parentNode;
        var tekst = document.createTextNode(i+'\n');
        var test = parent.lastChild;
        var billede = document.createElement('p');
        billede.appendChild(tekst);
        parent.replaceChild(billede, test);
      }
    }
  }

/mvh
</bole>
Avatar billede sw_red_6 Nybegynder
06. september 2007 - 08:48 #2
Ahh, det er simpel logik egentlig..
Havde selv fundet ud af at det var det der var galt, men havde ikke lige tænkt over at jeg kunne skifte dem ud bagfra i stedet for..

Hvis du ligger et svar...
Avatar billede olebole Juniormester
06. september 2007 - 15:19 #3
Man skal huske, at udtrykket:
    var inputfelter = document.getElementsByTagName('input');

- opretter en _reference_ til rækken af input-elementer. Derfor ændrer 'inputfelter' sig i takt med, man ændrer på dens elementer  ;o)
Avatar billede sw_red_6 Nybegynder
06. september 2007 - 16:40 #4
det forklare så hvorfor det skal gøres på den måde, så kan jeg forklare det hvis det skulle blive nødvendigt..

Takker
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