PDA

View Full Version : My ANGER at this code will never die! -- I am about to give up....




bobber205
Dec 30, 2005, 10:02 PM
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.


<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
Dec 30, 2005, 11:55 PM
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
Dec 31, 2005, 07:22 AM
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
Dec 31, 2005, 08:01 AM
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
Dec 31, 2005, 08:09 AM
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
Dec 31, 2005, 11:08 AM
Thanks for all the advice.

I will do all of it.

I appreciate it greatly.:cool:

bobber205
Dec 31, 2005, 01:58 PM
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.

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.

mymemory
Dec 31, 2005, 02:17 PM
I learned today how easy my life is and how much sense it makes.

bobber205
Dec 31, 2005, 02:26 PM
I learned today how easy my life is and how much sense it makes.

:confused:

Is this spam?
Please respond with helpful comments.:rolleyes:

londonweb
Jan 1, 2006, 10:58 AM
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.