PDA

View Full Version : Problem loading 2 functions concurrently



R3drum10
09-05-2006, 03:43 AM
Hi all, was trying to load the snow function and the mp3 function at the same time.. But found that only the snow function works and the mp3 does not play when the website is loaded.. Need help to load both simultaneously ya.. The code is below.. Thanks in advance :):)

<body onLoad="switchSongs(0)">
<script>
// CREDITS:
// Snowmaker Copyright (c) 2003 Peter Gehrig. All rights reserved.

// Set the number of snowflakes (more than 30 - 40 not recommended)
var snowmax=40

// Set the colors for the snow. Add as many colors as you like
var snowcolor=new Array("#aaaacc","#ddddFF","#ccccDD")

// Set the fonts, that create the snowflakes. Add as many fonts as you like
var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS")

// Set the letter that creates your snowflake (recommended:*)
var snowletter="*"

// Set the speed of sinking (recommended values range from 0.3 to 2)
var sinkspeed=0.6

// Set the maximal-size of your snowflaxes(22)
var snowmaxsize=26

// Set the minimal-size of your snowflaxes(8)
var snowminsize=12

// Set the snowing-zone
// Set 1 for all-over-snowing, set 2 for left-side-snowing
// Set 3 for center-snowing, set 4 for right-side-snowing
var snowingzone=1

///////////////////////////////////////////////////////////////////////////
// CONFIGURATION ENDS HERE
///////////////////////////////////////////////////////////////////////////


// Do not edit below this line
var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array();
var crds=new Array();
var lftrght=new Array();
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=ie5||ns6||opera

function randommaker(range) {
rand=Math.floor(range*Math.random())
return rand
}

function initsnow() {
if (ie5 || opera) {
marginbottom = document.body.clientHeight
marginright = document.body.clientWidth
}
else if (ns6) {
marginbottom = window.innerHeight
marginright = window.innerWidth
}
var snowsizerange=snowmaxsize-snowminsize
for (i=0;i<=snowmax;i++) {
crds[i] = 0;
lftrght[i] = Math.random()*15;
x_mv[i] = 0.03 + Math.random()/10;
snow[i]=document.getElementById("s"+i)
snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
snow[i].size=randommaker(snowsizerange)+snowminsize
snow[i].style.fontSize=snow[i].size
snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
snow[i].sink=sinkspeed*snow[i].size/5
if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)
snow[i].style.left=snow[i].posx
snow[i].style.top=snow[i].posy
}
movesnow()
}

function movesnow() {
for (i=0;i<=snowmax;i++) {
crds[i] += x_mv[i];
snow[i].posy+=snow[i].sink
snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i]);
snow[i].style.top=snow[i].posy

if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){
if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
snow[i].posy=0
}
}
var timer=setTimeout("movesnow()",50)
}

for (i=0;i<=snowmax;i++) {
document.write("<span id='s"+i+"' style='position:absolute;z-index:3;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}


if (browserok) {
window.onload=initsnow
}

</script>

<script>
if (!document.layers)
document.write('<div id="divStayTopRight" style="position:absolute">')
</script>

<layer id="divStayTopRight">

<script>

var songs = new Array(
"http://www.ultimateuploads.com/audio/audio/c4fde808e01f3cdb6ac60cb57d9de2a8/Lin Jun Jie - Dou Jiang You Tiao.mp3",
"Lin Jun Jie- - Dou Jiang You Tiao"
);

function switchSongs(i)
{
var file = songs[i * 2];
var title = songs[i * 2 + 1];
var element = document.getElementById('mysound_wrapper');
element.innerHTML = embedSound(file);
var element = document.getElementById('songtitle');
element.innerHTML = title;
var selector = document.getElementById('song_selector');
selector.selectedIndex = i;
return;
}

function embedSound(sound)
{
return '<embed src="' + sound + '" autostart="true" ' +
'width="335" height="22">';
}
</script>

<div align="center">
<select name="song_selector" id="song_selector"
onChange="switchSongs(selectedIndex)" style="FONT-SIZE: 9pt; BACKGROUND:#ffffff; WIDTH: 335; COLOR: #587B93; font-face:

verdana;">

<script>
for (i = 0; (i < songs.length); i += 2) {
var file = songs[i];
var title = songs[i + 1];
document.write('<option value="' +
i + '">' +
title + '</option>\n');
}
</script>
</select>

<div id="mysound_wrapper">
<noscript>
Our music player requires that you enable JavaScript in your
web browser's preferences.
</noscript>
</div>
<!-- END OF MP3 PLAYER -->
</layer>

jscheuer1
09-05-2006, 06:24 AM
You have more than two functions, you have two entire scripts! However, it is the two onload functions that are giving you the problem. This must be fixed for the two scripts to work together but, there may be other problems as well. Here is one way to combine your two onload events - first, get rid of the onload event in the body tag (red):


<body onLoad="switchSongs(0)">

Next, replace this:


if (browserok) {
window.onload=initsnow
}

with this:


window.onload=function(){
switchSongs(0);
if (browserok)
initsnow();
}

All other things being equal, which they probably are, and you will be in business.

R3drum10
09-05-2006, 07:03 AM
Thanks for the reply John:)

But now the snow script is not working but the song one is.. Could there be other problems?

jscheuer1
09-05-2006, 10:14 AM
Sure could. If the script that is working has defined something in a way that the script that is not working doesn't like, that could do it. Also if there are shared variable or function names between the two scripts.

One thing I can see, glancing at it is that both scripts use the variable i in the global scope. This can be a real problem. You have less i's in the music script, change those all to j's and you might be OK:


<script>

var songs = new Array(
"http://www.ultimateuploads.com/audio/audio/c4fde808e01f3cdb6ac60cb57d9de2a8/Lin Jun Jie - Dou Jiang You Tiao.mp3",
"Lin Jun Jie- - Dou Jiang You Tiao"
);

function switchSongs(j)
{
var file = songs[j * 2];
var title = songs[j * 2 + 1];
var element = document.getElementById('mysound_wrapper');
element.innerHTML = embedSound(file);
var element = document.getElementById('songtitle');
element.innerHTML = title;
var selector = document.getElementById('song_selector');
selector.selectedIndex = j;
return;
}

function embedSound(sound)
{
return '<embed src="' + sound + '" autostart="true" ' +
'width="335" height="22">';
}
</script>

<div align="center">
<select name="song_selector" id="song_selector"
onChange="switchSongs(selectedIndex)" style="FONT-SIZE: 9pt; BACKGROUND:#ffffff; WIDTH: 335; COLOR: #587B93; font-face:

verdana;">

<script>
for (j = 0; (j < songs.length); j += 2) {
var file = songs[j];
var title = songs[j + 1];
document.write('<option value="' +
j + '">' +
title + '</option>\n');
}
</script>
</select>

<div id="mysound_wrapper">
<noscript>
Our music player requires that you enable JavaScript in your
web browser's preferences.
</noscript>
</div>
<!-- END OF MP3 PLAYER -->
</layer>

That's if there are no other problems and I have separated the music script out correctly.

R3drum10
09-05-2006, 05:18 PM
Tried your method John, the same problem still exist. Is there no other way that i can make both work?