26. juni 2003 - 18:18Der er
4 kommentarer og 1 løsning
Fejl i script - Ekspert søges
Jeg har en irriterende pop up box, der siger der er fejl i linie 223, har kikket lidt på det, men kan ikke rigtigt finde fejlen. Skal lige siges at det er noget til vores test udstyr på arbejdet. Klik på linket. http://www.my-hyundai.dk/test/AIRBAG_attenzione.htm
De to linier fejlen opstår i er: function animate() { el = animateElements[currentElement] animation = el.getAttribute(dynamicanimAttr, false) //....Mer kode...
Nu aner jeg ikke hvad animate() skal gøre... Under alle omstændigheder skal variablen currentElement være defineret inden animate() kaldes. Hvilken værdi currentElement skal have ANER jeg ikke. Men currentElement skal være integer og større end 0.
Der ser ud til at være nogle mangler på siden. Scriptet, der fejler, skal have information om, hvilke(t) element(er), der skal animeres. Jeg prøvede følgende, og nu virker det uden fejlmeddelelser (jeg ved dog ikke, om resultatet er det ønskede? :)
1. Flyttede hele scriptet op i <head></head>
2. Satte <span id="ani1" dynamicanimation="zoomIn"> og </span> rundt om alt indholdet i <body></body>
3. Satte "ani1" ind i arrayet animateElements i starten af scriptet
Her er resultatet:
<HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252"> <META NAME="Generator" CONTENT="Microsoft Word 97"> <TITLE>AIRBAG_attenzione-dan</TITLE> <META NAME="Template" CONTENT="C:\PROGRAMMER\MICROSOFT OFFICE\OFFICE\html.dot"> <script language="JavaScript" fptype="dynamicanimation"><!-- // If you want to change this script, you must also make the following // changes so that FrontPage will not overwrite your new script. // In the script tag, change type="dynamicanimation" to type="mydynamicanimation" // In the first script statement, change "dynamicanimation" to "mydynamicanimation" // Throughout the HTML content, change dynamicanimation= to mydynamicanimation= // Change function dynAnimation to function mydynAnimation // In the body tag, change onload="dynAnimation()" to onload="mydynAnimation()" dynamicanimAttr = "dynamicanimation" animateElements = new Array('ani1') currentElement = 0 speed = 1 stepsZoom = 35 stepsWord = 8 stepsFly = 12 stepsSpiral = 16 steps = stepsZoom step = 0 outString = "" function dynAnimation() { var ms = navigator.appVersion.indexOf("MSIE") ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4) if(!ie4) { if((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0, 1)) >= 4)) { for (index=document.layers.length-1; index >= 0; index--) { layer=document.layers[index] if (layer.left==10000) layer.left=0 } } return } for (index=document.all.length-1; index >= document.body.sourceIndex; index--) { el = document.all[index] animation = el.getAttribute(dynamicanimAttr, false) if(null != animation) { if(animation == "dropWord" || animation == "flyTopRightWord" || animation == "flyBottomRightWord") { ih = el.innerHTML outString = "" i1 = 0 iend = ih.length while(true) { i2 = startWord(ih, i1) if(i2 == -1) i2 = iend outWord(ih, i1, i2, false, "") if(i2 == iend) break i1 = i2 i2 = endWord(ih, i1) if(i2 == -1) i2 = iend outWord(ih, i1, i2, true, animation) if(i2 == iend) break i1 = i2 } document.all[index].innerHTML = outString document.all[index].style.posLeft = 0 document.all[index].setAttribute(dynamicanimAttr, null) } if(animation == "zoomIn" || animation == "zoomOut") { ih = el.innerHTML outString = "<SPAN " + dynamicanimAttr + "=\"" + animation + "\" style=\"position: relative; left: 10000;\">" outString += ih outString += "</SPAN>" document.all[index].innerHTML = outString document.all[index].style.posLeft = 0 document.all[index].setAttribute(dynamicanimAttr, null) } } } i = 0 for (index=document.body.sourceIndex; index < document.all.length; index++) { el = document.all[index] animation = el.getAttribute(dynamicanimAttr, false) if (null != animation) { if(animation == "flyLeft") { el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth el.style.posTop = 0 } else if(animation == "flyRight") { el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth el.style.posTop = 0 } else if(animation == "flyTop" || animation == "dropWord") { el.style.posLeft = 0 el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight } else if(animation == "flyBottom") { el.style.posLeft = 0 el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight } else if(animation == "flyTopLeft") { el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight } else if(animation == "flyTopRight" || animation == "flyTopRightWord") { el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight } else if(animation == "flyBottomLeft") { el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight } else if(animation == "flyBottomRight" || animation == "flyBottomRightWord") { el.style.posLeft = 10000-offsetLeft(el)+document.body.offsetWidth el.style.posTop = document.body.scrollTop-offsetTop(el)+document.body.offsetHeight } else if(animation == "spiral") { el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth el.style.posTop = document.body.scrollTop-offsetTop(el)-el.offsetHeight } else if(animation == "zoomIn") { el.style.posLeft = 10000 el.style.posTop = 0 } else if(animation == "zoomOut") { el.style.posLeft = 10000 el.style.posTop = 0 } else { el.style.posLeft = 10000-offsetLeft(el)-el.offsetWidth el.style.posTop = 0 } el.initLeft = el.style.posLeft el.initTop = el.style.posTop animateElements[i++] = el } } window.setTimeout("animate();", speed) } function offsetLeft(el) { x = el.offsetLeft for (e = el.offsetParent; e; e = e.offsetParent) x += e.offsetLeft; return x } function offsetTop(el) { y = el.offsetTop for (e = el.offsetParent; e; e = e.offsetParent) y += e.offsetTop; return y } function startWord(ih, i) { for(tag = false; i < ih.length; i++) { c = ih.charAt(i) if(c == '<') tag = true if(!tag) return i if(c == '>') tag = false } return -1 } function endWord(ih, i) { nonSpace = false space = false while(i < ih.length) { c = ih.charAt(i) if(c != ' ') nonSpace = true if(nonSpace && c == ' ') space = true if(c == '<') return i if(space && c != ' ') return i i++ } return -1 } function outWord(ih, i1, i2, dyn, anim) { if(dyn) outString += "<SPAN " + dynamicanimAttr + "=\"" + anim + "\" style=\"position: relative; left: 10000;\">" outString += ih.substring(i1, i2) if(dyn) outString += "</SPAN>" } function animate() { el = animateElements[currentElement] animation = el.getAttribute(dynamicanimAttr, false) step++ if(animation == "spiral") { steps = stepsSpiral v = step/steps rf = 1.0 - v t = v * 2.0*Math.PI rx = Math.max(Math.abs(el.initLeft), 200) ry = Math.max(Math.abs(el.initTop), 200) el.style.posLeft = Math.ceil(-rf*Math.cos(t)*rx) el.style.posTop = Math.ceil(-rf*Math.sin(t)*ry) } else if(animation == "zoomIn") { steps = stepsZoom el.style.fontSize = Math.ceil(50+50*step/steps) + "%" el.style.posLeft = 0 } else if(animation == "zoomOut") { steps = stepsZoom el.style.fontSize = Math.ceil(100+200*(steps-step)/steps) + "%" el.style.posLeft = 0 } else { steps = stepsFly if(animation == "dropWord" || animation == "flyTopRightWord" || animation == "flyBottomRightWord") steps = stepsWord dl = el.initLeft / steps dt = el.initTop / steps el.style.posLeft = el.style.posLeft - dl el.style.posTop = el.style.posTop - dt } if (step >= steps) { el.style.posLeft = 0 el.style.posTop = 0 currentElement++ step = 0 } if(currentElement < animateElements.length) window.setTimeout("animate();", speed) } //--></script> </HEAD> <BODY TEXT="#ff0000" LINK="#0000ff" VLINK="#800080" BGCOLOR="#c0c0c0" bgproperties="fixed" onload="dynAnimation()"> <span id="ani1" dynamicanimation="zoomOut"> <P><FONT FACE="Arial" SIZE=5><STRONG>ADVARSEL! </FONT></STRONG><P ALIGN="CENTER"> </P> <FONT FACE="Arial" SIZE=4><STRONG><P ALIGN="CENTER">FØR DER UDFØRES ARBEJDE PÅ SYSTEMET,</P> <P ALIGN="CENTER">SKAL FORBINDELSEN TIL BATTERIET AFBRYDES I MINDST 10 MINUTTER</P> </FONT></STRONG><P ALIGN="CENTER"> </P> <FONT FACE="Arial" SIZE=4><STRONG><P ALIGN="CENTER">NÅR AIRBAG'EN HAR VÆRET UDLØST, </P> <P ALIGN="CENTER">SKAL STYREENHEDEN OG LEDNINGERNE UDSKIFTES</P></FONT></STRONG> </span> </BODY> </HTML>
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.