Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

bobber205

macrumors 68020
Original poster
Nov 15, 2005
2,182
1
Oregon
This has to be the worst code I have ever written...
It's making me SO angry.

Please, please, tell me what is wrong with this page.
The alert box continually comes up "null", which is very very incorrect.

I have look at it for an hour and a half already...
and I can't for the life of me tell what the heck is wrong.


Code:
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<title>Ticker Version 2.0</title>
<head>
<script type="text/Javascript">

var myBox = document.getElementById("tickerBox");
var tickerFrame = document.getElementById("mainDiv");
//var mytextNode = document.CreateTextNode("child this is");
//myBox.timer = setInterval(setTickerBoxText,"20");
//myBox.appendChild(textNode);




function setTickerBoxText(textValue)
{

	
		
	alert(tickerFrame);


}

</script>








<style type="text/CSS">
#mainDiv 
{
position: absolute;
top: 50px;
left: 50px;
width: 500px;
height: 400px;
background-color: rgb(201,200,100);
}
</style>
</head>

<body onLoad="setTickerBoxText('alex')">



<div id="mainDiv" onMouseOver="setTickerBoxText('a')">

</div>

http://www.alexwait.com/NortonvilleandWinchester/index2.html

There's the page uploaded.

Thanks for any help! I am desperate!:D
 

devman

macrumors 65816
Apr 19, 2004
1,242
8
AU
disclaimer: I am NOT a web developer.

If the div hasn't been rendered at the time you try to reference it then your script (the getElementById call) will return null.

If you move the script underneath the div you will see that it is no longer null.
 

belvdr

macrumors 603
Aug 15, 2005
5,945
1,372
I'm no developer either, but I thought that this way just declared the function. Then, later in the code, you could run that function and get results at that particular moment.
 

Mr. Anderson

Moderator emeritus
Nov 1, 2001
22,568
6
VA
I don't have any experience with this type of code - but just looking at it you pass the text value and then you don't do anything with the text - just call

alert(tickerFrame);

Don't you want to pass the text along to the ticker frame as well?

D
 

londonweb

macrumors 6502
Sep 14, 2005
260
0
london
There are a few things wrong with this code.

Have you closed your <body> tag? It doesn't appear in the script here.

The first thing this tries to do is set a variable tickerFrame containing the contents of your mainDiv tag with the onLoad method, which at this point is empty, so this variable's value is set to null.

var tickerFrame = document.getElementById("mainDiv");

Then you try to call a function with the onLoad method, to display an alert with the text 'alex'. This function is called, but the alert is told to display the variable tickerFrame, which is null. If you want the alert to display 'alex', you need to let it display the contents of textValue, ie. alert(textValue).

onLoad="setTickerBoxText('alex')"

The same thing happens with the onMouseOver method.

Could you explain what it is you're trying to do? We might be able to help you do it in a better way.
 

bobber205

macrumors 68020
Original poster
Nov 15, 2005
2,182
1
Oregon
Thanks for the advice.
All of those problems are now fixed.

But, however, I've discovered an essential problem with my code.

The page is here:
http://www.alexwait.com/NortonvilleandWinchester/index2.html

When the mouse moves over the top green box, I have a function called "setBooleans" that takes a String variable...

If the variable is "true" I set a global variable called "shouldContinue" to true also.
This controls a while loop and prevents it from continuing on forever. ;)

When the mouseOut event fires, I send a "false" variable to the setBooleans function and I have code in there that is supposed to set shouldContinue to false .

But it doesn't. I've added alert boxes to show me what's going on.
And that's how I found out what is wrong.

Thanks for any help.

The code in question is below.

Code:
function setBooleans(path)
{
alert("path = " + path);

if (path = "true") { 
shouldContinue = "true"; 
alert("I set it to TRUE");
}

if (path = "false") {
shouldContinue = "false";
alert("I set it to FALSE");

}
:( 
}

Again, thanks alot.
 

londonweb

macrumors 6502
Sep 14, 2005
260
0
london
I think it's because you haven't the right type of equals operators- if you want to set a variable you need to use one ie. (a = 2). If you want to find out if a is exactly equal to 2, you use two together, like this: (a == 2).

Also, I don't believe you need to use quotes when writing boolean values.

so in your case you should be writing:

if (path == true) { etc.

Try that.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.