Avatar billede coolkiss Nybegynder
15. marts 2005 - 14:33 Der er 2 kommentarer og
2 løsninger

Flere Scripts sammen fungerer bare ikke!

Hej, jeg har endelig opdaget de fede ting man kan med javascript. Jeg har brugt toscripts fra www.dynamicdrive.com og de virker godt hver for sig, men det går galt hvis man sætter dem på samme. Koden herunder er ændret lidt, mon nogen kan se hvor fejlen ligger? Jeg har læst at man skal lave et body onload tag hvor man aktiveret "init" i begge scripts, men det er ikke lykkedes mig. Hjælp!

Mvh.
CoolKiss

<HTML>
<HEAD><TITLE>Test 1</TITLE>
<style>
<body onload="init();init()">

.shakeimage{
position:absolute;
left:400px;
top:200px;
}
</style>
<script language="JavaScript1.2">

/*
Shake image script (onMouseover)-
(c) Dynamic Drive (www.dynamicdrive.com)
For full source code, usage terms, and 100's more DHTML scripts, visit http://dynamicdrive.com
*/

//configure shake degree (where larger # equals greater shake)
var rector=3

///////DONE EDITTING///////////
var stopit=0
var a=1

function init(which, sleft,stop){
stopit=0
shake=which
shake.style.left=sleft
shake.style.top=stop
}

function rattleimage(){
if ((!document.all&&!document.getElementById)||stopit==1)
return
if (a==1){
shake.style.top=parseInt(shake.style.top)+rector
}
else if (a==2){
shake.style.left=parseInt(shake.style.left)+rector
}
else if (a==3){
shake.style.top=parseInt(shake.style.top)-rector
}
else{
shake.style.left=parseInt(shake.style.left)-rector
}
if (a<4)
a++
else
a=1
setTimeout("rattleimage()",50)
}

function stoprattle(which,sleft,stop){
stopit=1
which.style.left=sleft
which.style.top=stop
}

</script>
<script type="text/javascript">

/****************************************************
*            DOM Image rollover:
*        by Chris Poole
*        http://chrispoole.com
*              Script featured on http://www.dynamicdrive.com
*        Keep this notice intact to use it :-)
****************************************************/

function init() {
  if (!document.getElementById) return
  var imgOriginSrc;
  var imgTemp = new Array();
  var imgarr = document.getElementsByTagName('img');
  for (var i = 0; i < imgarr.length; i++) {
    if (imgarr[i].getAttribute('hsrc')) {
        imgTemp[i] = new Image();
        imgTemp[i].src = imgarr[i].getAttribute('hsrc');
        imgarr[i].onmouseover = function() {
            imgOriginSrc = this.getAttribute('src');
            this.setAttribute('src',this.getAttribute('hsrc'))
        }
        imgarr[i].onmouseout = function() {
            this.setAttribute('src',imgOriginSrc)
        }
    }
  }
}


</script>

<body>
<BODY style="BACKGROUND: #ccccff; bgColor=#ccccff>

<img src="cph1.jpg" width="587" height="463" class="shakeimage" onMouseover="init(this,400,200);rattleimage()" onMouseout="stoprattle(this,400,200);top.focus()" onClick="top.focus()">

<img src="before.jpg" hsrc="after.jpg">
</html>
Avatar billede skyggen2000 Nybegynder
15. marts 2005 - 14:37 #1
Du skal give de to funktioner forskellige navne, fx. init1() og init2(), og kalde dem i din onload:
onload="init1();init2()"

Lige nu, går det helt galt, da du har to funktioner der hedder det samme, som du prøver at kalde to gange i onload.
Avatar billede coolkiss Nybegynder
15. marts 2005 - 15:47 #2
Skal jeg så bare kalde den anden funktion init2? Det virker ikke når jeg ummidelbart ændrer dem og laver en onload som du nævner.
Avatar billede skyggen2000 Nybegynder
15. marts 2005 - 16:04 #3
Du skulle prøve at køre din HTML igennem, den er helt gal. Tre gange start body tags, og den ene inde i et style tag:)

Du kan ikke kalde den første funktion uden parametre, det vil den fejle på!

Ved ikke hvordan du vil bruge den anden.

Når du kører kode sammen, skal du huske at gruppere de enkelte dele, ellers kan browseren ikke genkende det, og ved derfor ikke hvad du vil.

Hvis man ændrer navnet på en funktion, skal man også ændrer referencerne til den, du kalder den under onmouseover fx.

Nu er du i hvert fald tæt på målet.

Jeg har cleanet det lidt:


<HTML>
<HEAD>
<TITLE>Test 1</TITLE>
<style>
.shakeimage{
position:absolute;
left:400px;
top:200px;
}
</style>

<script language="JavaScript1.2">

/*
Shake image script (onMouseover)-
(c) Dynamic Drive (www.dynamicdrive.com)
For full source code, usage terms, and 100's more DHTML scripts, visit http://dynamicdrive.com
*/

//configure shake degree (where larger # equals greater shake)
var rector=3

///////DONE EDITTING///////////
var stopit=0
var a=1

function init1(which, sleft,stop){
stopit=0
shake=which
shake.style.left=sleft
shake.style.top=stop
}

function rattleimage(){
if ((!document.all&&!document.getElementById)||stopit==1)
return
if (a==1){
shake.style.top=parseInt(shake.style.top)+rector
}
else if (a==2){
shake.style.left=parseInt(shake.style.left)+rector
}
else if (a==3){
shake.style.top=parseInt(shake.style.top)-rector
}
else{
shake.style.left=parseInt(shake.style.left)-rector
}
if (a<4)
a++
else
a=1
setTimeout("rattleimage()",50)
}

function stoprattle(which,sleft,stop){
stopit=1
which.style.left=sleft
which.style.top=stop
}

/****************************************************
*            DOM Image rollover:
*        by Chris Poole
*        http://chrispoole.com
*              Script featured on http://www.dynamicdrive.com
*        Keep this notice intact to use it :-)
****************************************************/

function init2() {
  if (!document.getElementById) return
  var imgOriginSrc;
  var imgTemp = new Array();
  var imgarr = document.getElementsByTagName('img');
  for (var i = 0; i < imgarr.length; i++) {
    if (imgarr[i].getAttribute('hsrc')) {
        imgTemp[i] = new Image();
        imgTemp[i].src = imgarr[i].getAttribute('hsrc');
        imgarr[i].onmouseover = function() {
            imgOriginSrc = this.getAttribute('src');
            this.setAttribute('src',this.getAttribute('hsrc'))
        }
        imgarr[i].onmouseout = function() {
            this.setAttribute('src',imgOriginSrc)
        }
    }
  }
}

</script>

<body onload="init2();">

<img src="cph1.jpg" width="587" height="463" class="shakeimage" onMouseover="init1(this,400,200);rattleimage()" onMouseout="stoprattle(this,400,200);top.focus()" onClick="top.focus()">

<img src="before.jpg" hsrc="after.jpg">
</body>
</html>
Avatar billede coolkiss Nybegynder
16. marts 2005 - 10:01 #4
Smukt! Mange mange tak!
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