Avatar billede mtrolle Nybegynder
12. juni 2007 - 15:31 Der er 3 kommentarer og
1 løsning

resultat af getElementsByName

Hej,

Jeg har lavet en funktion

function showStatus(elmName, controllerElm) {
    elmStatus = controllerElm.rel;
    allElm = document.getElementsByName(elmName);
    for (i=0; i<allElm.length; i++) {
        allElm[i].style.display = elmStatus;
    }
   
    if(elmStatus == 'block') {
        controllerElm.src='images/icon_cross.gif';
        controllerElm.rel = 'none';
    } else {
        controllerElm.src='images/edit.gif';
        controllerElm.rel = 'block';
    }
}


Som kaldes således fx:
<img src="images/edit.gif" alt="Rediger" title="Rediger" rel="block" onclick="showStatus('activeSettings',this);" style="margin-bottom:2px; cursor:pointer;" />


Og har således en lang række div tag som ser således ud:
<div name="activeSettings" style="display:none;">CONTENT</div>


Min årsag er jeg har en kæmpe stor tabel med en masse input felter. For at undgå det er uoverskueligt skal de fleste input felter være skjult som start, men har man så behøv for at redigere dem trykker man blot på redigerings ikonet og således åbner alle div tags med det valgte navn op.
Det spiller i Firefox og Safari på mac og pc.
Men i IE på PC spiller det ikke. Den lave rigtig nok redigeringsikonet om til at luk ikon, men alle de div tags der skal ændres styles på sker der ikke en skid med.

nogle forslag?
Avatar billede mclemens Nybegynder
12. juni 2007 - 17:19 #1
Umiddelbart virker min FF ikke medmindre du retter
controllerElm.rel til controllerElm.getAttribute("rel");
... Anyway hvad med denne her:

function showStatus(elmName, controllerElm) {
    elmStatus = controllerElm.getAttribute("rel");

    allElm = document.getElementsByTagName("div");
    for (i=0; i<allElm.length; i++) {
        if(allElm[i].getAttribute("name")==elmName)allElm[i].style.display = elmStatus;
    }
 
    if(elmStatus == 'block') {
        controllerElm.src='images/icon_cross.gif';
        controllerElm.rel = 'none';
    } else {
        controllerElm.src='images/edit.gif';
        controllerElm.rel = 'block';
    }
}


... Evt. gjort mere målrettet med
allElm = document.getElementsByTagName("div");
rettet til
allElm = document.getElementById("id_paa_element_hvor_diverne_er_i").getElementsByTagName("div");

... Havde det nu været inputs, forms m.v. havde IE reageret bedre med getElementsByName(elmName)
Avatar billede mclemens Nybegynder
12. juni 2007 - 17:21 #2
Edit: Umiddelbart virker min FF ikke medmindre du retter
controllerElm.rel til controllerElm.getAttribute("rel");
^ - Den del var en fejl, sad åbenbart i IE, lol :o)
Avatar billede mtrolle Nybegynder
13. juni 2007 - 10:52 #3
Dejligt
Avatar billede mclemens Nybegynder
13. juni 2007 - 12:29 #4
Velbekom, og tak for point :o)
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