09. august 2006 - 22:42Der er
25 kommentarer og 2 løsninger
hjælp til optimering af link script
Har dette lille script til at fjerne "focus" boxen omkring link
function Fjernbox() { var aA = document.getElementsByTagName("a"); for (var i=0,j=aA.length;i<j;i++) aA[i].onfocus = function(){this.blur()}; }
Men det hjælper ikke på image area, så har tilføjet lidt til det
function Fjernbox() { var aA = document.getElementsByTagName("a"); for (var i=0,j=aA.length;i<j;i++) aA[i].onfocus = function(){this.blur()}; var aAr = document.getElementsByTagName("area"); for (var i=0,j=aAr.length;i<j;i++) aAr[i].onfocus = function(){this.blur()}; }
Det funger udemærket. men tæknte om ikke de kunne gøres lidt simplere ? altså bygge de to funktioner sammen feks : var aA = document.getElementsByTagName("a")||document.getElementsByTagName("area"); eller noget i den stil ????
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
thesufer "Så kan du lige så gøre sådan her: for (var i=0; i < aAr.length ; i++)" Den havde jeg ikke lige tænkt på :-) (er et gammelt script jeg ikke har leget med længe)
Hmmm, kunne ikke gennemskue den :/ - en rettelse til mit forslag:
function Fjernbox() { aA=["a","area"];for(i=0;i<aA.length;i++)for(j=0;aAr=document.getElementsByTagName(aA[i])[j];j++)aAr.onfocus=function(){this.blur()}; }
Her er lige thesurfers eksempel (&& istedet for + ) :
<script type="text/javascript"> function Fjernbox() { var aA = document.getElementsByTagName("a")&&document.getElementsByTagName("area"); for (i=0; i < aA.length ; i++)aA[i].onfocus = function(){this.blur()}; } </script>
<script type="text/javascript"> function Fjernbox() { aA=document.getElementsByTagName(("a")&&("area")); for (i=0;i<aA.length;i++)aA[i].onfocus=function(){this.blur()}; } </script>
function Fjernbox() { var aA = document.getElementsByTagName("a")&&document.getElementsByTagName("area"); for (i=0; i < aA.length ; i++)aA[i].onfocus = function(){this.blur()}; }
og
function Fjernbox() { aA=document.getElementsByTagName(("a")&&("area")); for (i=0;i<aA.length;i++)aA[i].onfocus=function(){this.blur()}; }
virker ikke på "a" (eller omvendt hvis jeg bytter rundt på "a" og "area")
Til gændgæld ser: var aA=["a","area"];for(i=0;i<aA.length;i++)for(j=0;aAr=document.getElementsByTagName(aA[i])[j];j++)aAr.onfocus=function(){this.blur()}; ud til at virke
<script type="text/javascript"> function Fjernbox() { a=["a","area"]; for(i in a){b=document.getElementsByTagName(a[i]); for(j in b)b[j].onfocus=function(){this.blur()};} } </script>
mclemens sidste virker også så blot et spørgsmål om vilken der er smartest
function Fjernbox() { a=["a","area"]; for(i in a){b=document.getElementsByTagName(a[i]); for(j in b)b[j].onfocus=function(){this.blur()};} }
eller
function Fjernbox() { var aA=["a","area"];for(i=0;i<aA.length;i++)for(j=0;aAr=document.getElementsByTagName(aA[i])[j];j++)aAr.onfocus=function(){this.blur()}; }
Jeg ville tage den sidste ( 10/08-2006 01:06:44 ) jeg foretrækker at jeg tildeler en forbindelse til alle elementer og gennemløber elementerne fra et array som i den udgave.
Den jeg lavede først var før jeg fik den i svingninger og tænkte på gennemløb af tildelingen og gennemløbet af elementerne analyserer lige den jeg ikke kan lide...
var aA=["a","area"]; // Ens for begge
for(i=0;i<aA.length;i++) // For både a og area laves et gennemløb - næsten "ens" også
for(j=0;aAr=document.getElementsByTagName(aA[i])[j];j++) /* Der foretages et gennemløb af elementerne i a og area og hver gang et element behandles spørges på true/false for at checke om løkken skal løbe videre. aAr tildeles en ny værdi for hvert eneste gennemløb. Det er denne her med at man ikke gennemløber et fast antal elementer man lader den prøve sig frem hovedløs jeg ikke kunne lide. Jeg vil klart anbefale den i 10/08-2006 01:06:44. Den fylder mindre og er mindst lige så effektiv - eller rettere tror egentlig den er en del mere effektiv (har dog ikke testet hastighed og ressourcer). */
Vi tager lige den anden nu jeg spammer Den er jo meget mere simpel end den første... - Kan specielt godt lide måden at loope igennem elementerne og det med ikke at skulle fange hvert element oppe fra dom (document. ...) hver gang man skal rette på elementet
- men om det er hurtigere ved jeg selvfølgelig ikke helt... - men jeg tror ikke at det er langsommere...
function Fjernbox() { a=["a","area"]; // Array med text strenge for(i in a){ // Gennemløb af text strenge i array'et b=document.getElementsByTagName(a[i]); // Tildeler b et array af objecter baseret på ovenstående gennemløb af text strenge for(j in b)b[j].onfocus=function(){this.blur()}; // Gennemløber b array'et for objecter og tildeler hvert object en onfocus } }
-- og lige en kommentar til strandløvens første spørgsmål:
" Hvorfor står der "j=aAr.length", når du kun bruger "j" et sted? "
Det er faktisk en god teknik, for j bruges ved hvert eneste gennemløb i løkken, hvor betingelsen jo netop checkes for at se om der skal loopes yderligere, så den er specielt ressourcebesparende specielt med store arrays, da man så undgår, at der for hvert gennemløb skal beregnes, hvor langt det pågældende array af elementer er !-)
roenving> Det vidste jeg godt.. Jeg ville bare teste jer.. tænk at det tog så lang tid, for at en af jer sagde noget.. :-)
(vidste det faktisk godt, men havde glemt det)
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.