Hehe ... Dr. Hook, himself - long time, no see :) Prøv noget à la:
var aSelects = parent.FRAMENAVN.document.getElementsByTagName("SELECT"); for (i=0; i<aSelects.length; i++) { aSelects[i].style.display = "none" }
Men hvis det er en menu (eller nogle andre lag), der skal gemme de elementer, der ellers ville 'brænde' igennem, er det bedre at bruge 'visibility = "hidden"'. Bruger du display, optager elementet ikke plads på siden - det sker ikke ved visibility ... og du undgår, at siden står og 'animerer' ved 'vis/skjul' ;o)
Hvad kan jeg sige andet end; Det virker jo perfekt :-)
Jeg har siden vi sidst var i dialog ofte tænkt på at jeg potentielt godt kunne bruge din "hjerne" som freelance arbejdskraft nu og da....
Hvis dette måtte have din interesse, eller du i øvrigt ikke ville have noget imod at jeg kontaktede dig uden for dette forum, såfremt jeg havde en grim "nød" at knække - ja, så håber jeg du vil sende mig en mail med lidt info om hvordan jeg kan komme i kontakt med dig i den "virkelige verden" :-)
Tjaaahhh ... men er vel et gammelt brystbarn - og selv om det nærmer sig et halvt hundrede år siden, jeg blev taget fra, fascinerer de jo stadig. Så har du problemer med for mange nødder, til du selv kan tage dig af dem alle, hjælper jeg da gerne. Blot er jeg ikke helt tilfreds med arbejdsdelingen ... hvorfor skal _jeg_ tage mig af de grimme? :D Du får en mail ;o) /mvh
Jamen, det er zq da ikke spam, grunken. Det er altid en fordel at få vist flere muligheder - og vi har jo alle vore egne kodevaner ;o) Den eneste hage ved dit eksempel er, at scriptet skal lede alle elementer igennem (som ved document.all i IE). Jeg tror hellere, jeg ville gøre sådan:
function visskjul() { var elms, a = new Array(); for ( i=1; i<arguments.length; i++ ) { elms = parent.FRAMENAVN.document.getElementsByTagName(arguments[i]); a = a.concat(elms); } for(i=0;i<a.length;i++){ a[i].style.visibility = arguments[0]; } } visskjul( "visible", "SELECT", "OBJECT" );
Men bevares ... det giver ikke de store forskelle ved sider i alm. størrelser :) /mvh
Du har selvfølgelig ret bole :o), jeg mente bare at man også kan du drukne i løsningsforslag, som egentlige er "ligegyldige" i forhold til operationen man står over for at skulle gennemføre :o)
Dit eksempel er faktisk ganske illustrativt, og viser en god løsning til mellemstore dokumenter, som jeg faktisk aldrig har overvejet :o)
Jeg har nu altid syntes, flere forskellige løsninger er en god ting på E - så får folk bedre fornemmelsen af, at også script- og programmeringssprog har 'dialekter' :)
Til dit spm: Nej, jeg har lavet det lidt smartere ;o)
function visskjul() { // Opret en tom variabel (elms) og et array (foreløbig) uden elementer var elms, a = new Array(); // Løb argumenterne igennem (undtagen det første) i en løkke for ( i=1; i<arguments.length; i++ ) { // For hvert gennemløb, opret et array af elementer med ønsket tag-navn elms = parent.FRAMENAVN.document.getElementsByTagName(arguments[i]); // HER sker det: Vi 'svejser' a-array'et sammen med element-array'et a = a.concat(elms); }
// Her vises eller gemmes elementerne for(i=0;i<a.length;i++){ a[i].style.visibility = arguments[0]; } }
hmm, så burde jeg nok have drukket lidt mindre vin over aftensmaden for et resultat af ovenstående vil i "mine" browsere, kun lave 2 x "HTML object arrays" :o)
Deraf resltatet med den ekstra for løkke :o), for concat nægter at fungere, som jeg udemærket godt kan se at du har fået den til at fungere :o)
Nå nok om det, jeg tror egentligt at opretter fik sin optimale løsning!
document.getElementsByTagName(TAG) returnerer ikke et array, men en collection (omend sådan to opfører sig _næsten_ ens). Du kan prøve at sætte en alert ind lige før den sidste løkke: alert(a). Den vil sige: [object],[object] ... altså et array bestående af to collections - i stedet for ét langt array.
Morale: Man bør _altid_ teste sine eksempler! Så ka' jeg zq lære det ...!!! :D
Krogen og grunken >> Glem alt om mit eksempel (06/03-2004 19:42:54) ... [lyden af røde ører, der blafrer] :) /mvh
Ikke destomindre er jeg ret sikker på at vi alle forstod hvad der mentes :o), og udover det blev man jo osse beriget med nye muligheder i jsuniverset :o)
vi omskriver en sidste gang, og der burde være opnået den ønskede funktionalitet!
function visskjul() { for (i=1; i<arguments.length; i++) { var elm = document.getElementsByTagName(arguments[i]); for(j=0;j<elm.length;j++) elm[j].style.visibility = arguments[0]; } }
P.S hvordan dælen lyder sådan nogle ører ? :o)
Synes godt om
Ny brugerNybegynder
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.