PDA

View Full Version : JavaScript conflict


hebxi1
10-02-2002, 10:56 PM
I have two scripts on one page - one shows the date and the other is an image rolover script. Previously both worked, now the rollover script does not. I read DHTML's tutorial on how to resolve the onload conflict, which seemed to be the problem, but the images still aren't changing like they are supposed to.

Any ideas?

martin_narg
10-02-2002, 11:12 PM
could you post/link up the script please?

cheers

m_n

hebxi1
10-02-2002, 11:19 PM
Script 1

<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].onmousedown = function() {
imgOriginSrc = this.getAttribute('src');
this.setAttribute('src',this.getAttribute('hsrc'))
}
imgarr[i].onmouseup = function() {
this.setAttribute('src',imgOriginSrc)
}
}
}
}

</script>



Script 2

<script>

/*
Live Date Script-
© Dynamic Drive (www.dynamicdrive.com)
For full source code, installation instructions, 100's more DHTML scripts, and Terms Of Use,
visit http://www.dynamicdrive.com
*/


var dayarray=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
var montharray=new Array("January","February","March","April","May","June","July","August","September","October","November","December")

function getthedate(){
var mydate=new Date()
var year=mydate.getYear()
if (year < 1000)
year+=1900
var day=mydate.getDay()
var month=mydate.getMonth()
var daym=mydate.getDate()
if (daym<10)
daym="0"+daym
var hours=mydate.getHours()
var minutes=mydate.getMinutes()
var seconds=mydate.getSeconds()
var dn="AM"
if (hours>=12)
dn="PM"
if (hours>12){
hours=hours-12
}
if (hours==0)
hours=12
if (minutes<=9)
minutes="0"+minutes
if (seconds<=9)
seconds="0"+seconds
//change font size here
var cdate="<div class=body>"+dayarray[day]+", "+montharray[month]+" "+daym+", "+year+"&nbsp;&nbsp;&nbsp;"+hours+":"+minutes+" "+dn+"</div>"
if (document.all)
document.all.clock.innerHTML=cdate
else if (document.getElementById)
document.getElementById("clock").innerHTML=cdate
else
document.write(cdate)
}
if (!document.all&&!document.getElementById)
getthedate()
function goforit(){
if (document.all||document.getElementById)
setInterval("getthedate()",1000)
}

</script>


Script 1 originally had onload=init; at the end. I took that out and called both with <body onLoad="init; goforit()">

adios
10-02-2002, 11:49 PM
Hmmm...

This:

onload=init;

...goes inside a <script></script> block - that's why the parentheses ("call this function") are not used: you're just setting a pointer; the other usage - inside the <body> tag (HTML) require them, if you want the function called onload.

<body onLoad="init(); goforit()">

hebxi1
10-02-2002, 11:52 PM
gotcha...that fixed it :) thanks :)