du kan teste om document.getElementById("spanId") eksisterer: if (document.getElementById("spanId")) { // span element eksister } else { // og hvis ikke. }
Her kan det være en fordel at skrive: elm = document.getElementById("spanId"); if (elm) { // osv. } så du ikke behøver hente elementet igen hvis det nu eksisterer.
if(myImage.id) var imgID = 'id="' + myImage.id + '" '; if(myImage.className) var imgClass = 'class="' + myImage.className + '" '; if(myImage.style) var imgStyle = myImage.style.cssText;
giver dig nogle lokale variable (imgID, imgClass, imgStyle) som ikke er definerede når dine if-sætninger går ud af scope, dvs. for disse if-sætningers vedkommende i næste linie. Det betyder at de ikke er definerede længere. Hvis du vil have at de har en veldefineret værdi når du skal benytte dem senere i din funktion skal du erklære dem udenfor dine if-sætninger...
Hvis du skal undersøge om dit image bliver udskiftet med et span-element, kan du efterfølgende hente elementet (document.getElementById(imageid)) og checke om tagName er lig med "SPAN" eller "IMG" (gæt selv selv konsekvenserne af de to ;o))...
hvis jeg forstår det rigtigt (er ikke særlig pæn, men det ser vi lige bort fra nu, og der er sikkert fejl i css-sætningen, men hvis der er kan du lige checke for anførselstegn og den slags. Det kræver du har skrevet den rigtigt op selv fra starten af): function fix_png(myImage) { if(document.getElementById) { elm = document.getElementById(myImage); if(elm.id) var imgID = 'id="' + myImage.id + '" '; if(elm.className) var imgClass = 'class="' + myImage.className + '" '; if(elm.style) var imgStyle = myImage.style.cssText; if(elm.parentElement.href) imgStyle += 'cursor:hand; cursor:pointer;'; span = document.getElementById(imgID); css = 'width:' + myImage.width + 'px; height:' + myImage.height + 'px; ' + imgStyle + ';' + 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + myImage.src + '\', sizingMethod=\'scale\')' if (span) { myImage.outerHTML = '<span ' + imgID + imgClass + ' style="'+css+'"></span>'; } } else { span.cssText = css; } }
span.style.cssText = css; skulle der stå. cssText er dog ikke så udbredt endnu (virker i hvert fald i IE og nyere Mozilla versioner), men det er ret bøvlet at ordne det ellers.
Hvorfor overhovedet bruge fix_png-funktionen? Du slipper for tvivlsomme hacks, hvis du bruger PNG8-formatet. Det har jeg ikke oplevet, IE har synderlig problemer med - og så kunne du jo vente med at bruge PNG24, til også IE understøtter dette format :)
Det er kun et spørgsmål om at kunne lidt billedbehandling. Hvad transparents angår fungerer PNG8 ligeså godt/dårligt som GIF - og den algoritme har man uden de store problemer kunne bruge de sidste 10 år på WWW :) Naturligvis bliver kanten mere takket, men kanten kan næsten altd laves, så det ikke kan ses, at den er takket.
ok... tak for hjælpen, nu ved jeg i hvert fald det til en anden gang ;)
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.