aspose file tools*
The moose likes HTML, CSS and JavaScript and the fly likes JavaScript Newbie Simple Problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Engineering » HTML, CSS and JavaScript
Bookmark "JavaScript Newbie Simple Problem" Watch "JavaScript Newbie Simple Problem" New topic
Author

JavaScript Newbie Simple Problem

Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
I have been coding for years but I am brand new to JavaScript. So far it's pretty easy, but this one program I wrote just won't work right!!

The code is pretty self-explainatory, it displays the current date on top of the page, there are 3 boxes to enter numbers into for hours, days, weeks, and then you press calculate and it's supposed to print the new date below. If someone could look over my code and tell me where I am going wrong? I believe it's a syntax error myself. :P

Thanks!!



SCJA
~Currently preparing for SCJP6
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61756
    
  67

Green text on tan is a guarantee that many people will not be able to read your post. I have removed the color for you.


[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61756
    
  67

What is the nature of the error? That's a lot of code to expect people to inspect without any clues. Have you run the script in Firebug on Firefox to find out more information about the error?
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61756
    
  67

Why is line 50 commented out?
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
Sorry about that. I figured someone would copy/paste the code into an HTML and open it in a browser.

I'm not getting an error exactly.... just results that are different from expected. After pressing "calculate" instead of getting something like "Thursday, January 8, 2053" I am getting "undefined, undefined NaN, NaN". I have something mixed up obviously.
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
Bear, it shows line 50 as commented because it starts with a //.... but any browser with JavaScript enabled will read the line just fine. IE6, 7 and FF do that I know of. That's exactly how the tutorial/trainer I've been using shows to set up a JavaScript block so that disabled or older browsers will not print the code on the screen.
Eric Pascarello
author
Rancher

Joined: Nov 08, 2001
Posts: 15376
    
    6
hint:



Eric
Eric Pascarello
author
Rancher

Joined: Nov 08, 2001
Posts: 15376
    
    6
Learn about Firebug for Firefox, add a break point to the function, and walk through your code.

Eric
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61756
    
  67

Are you planning on supporting IE3?

If not, you can drop the antiquated practice of gooping up the markup with the unnecessary commenting.
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
Eric, Thanks for the help. I actually use Firebug all the time when debugging HTML and CSS problems. I didn't know you could use it to debug JavaScript as well. How would you insert a break and check the code on the fly using Firebug? Like I said, I'm a JavaScript newb

Bear, No I don't plan to support IE3, lol. I guess the tutorial I am using is very old then. I will take out the useless comments... but leaves me wondering how to support a browser that has JavaScript disabled?

Thanks!
Eric Pascarello
author
Rancher

Joined: Nov 08, 2001
Posts: 15376
    
    6
Open up the script. click on the left hand side to add a break point in the place in question like you would do with any IDE for debugging serverside code. Refresh the browser. Use the buttons in the toolbar to step.

Eric
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
I'm using Notepad... rofl! I'll mess with Firefox and see what I can come up with because the foo = 1 + "1" thing still has me confused. I know what your getting at but this works:



And this does not:



They are both returning Strings and numbers but the top one is concatinating them correctly while the bottom is giving me undefined and NaN.
Eric Pascarello
author
Rancher

Joined: Nov 08, 2001
Posts: 15376
    
    6
Go old school, add alert statements in your function getNewTime or walk through it will firebug.

Eric
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
Thanks Eric... I got it to work by debugging in Firebug. The error was in line "newMilliseconds += (oneWeek + weeks)" Should have been "newMilliseconds += (oneWeek * weeks)"

The + was concatinating the strings and making the newMilliseconds so long that a new Date object couldn't be created from it. Such a small mistake too, lol.

Thanks Eric and Bear!
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
While I've got a couple authors here..... What's the current version of JavaScript that's considered "standard" and do you know of any online tutorials that are good? Apparantly the one I've been using is for JavaScript 1.1 and is severly out of date. I didn't know where to start so I just randomly jumped in to it.

thanks!
Eric Pascarello
author
Rancher

Joined: Nov 08, 2001
Posts: 15376
    
    6
http://en.wikipedia.org/wiki/JavaScript#Versions

Eric
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61756
    
  67

Brian Legg wrote:but leaves me wondering how to support a browser that has JavaScript disabled?


That, my friend, could be a book onto itself.

There is a <noscript> tag by which you can provide markup specific to such a situation, but the modern approach is to write the pages, using a technique known as Unobtrusive JavaScript, such that the page still works in the absence of JavaScript.
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
WoW.... so FF can handle JavaScript 1.9 but IE can only go up to JavaScript 1.5 unless they have Crome? So do most people code in 1.5 right now since IE6 and 7 are still dominant browsers? I just want to make sure my scripts are compatible with the majority of browsers out there.

thanks!
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61756
    
  67

P.S. in my current project I have the luxury of saying "enable JavaScript or go away".
Eric Pascarello
author
Rancher

Joined: Nov 08, 2001
Posts: 15376
    
    6
I think Mozilla came up with 1.9 on their own. Do not quote me on that.

If you want to use JavaScript, use JQuery and save yourself a headache.

Eric
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
Bear Bibeault wrote:P.S. in my current project I have the luxury of saying "enable JavaScript or go away".


That's great Bear, lol. I am still semi-new to CSS and HTML... I mean, they are easy to learn/use but it's not easy to create websites that are 100% cross browser compatible (look and feel I mean). So for now I am just trying to concentrate on making pages as simple and browser friendly as possible including JavaScript. I don't like to write stuff to check what browser someone is using or whether they have JavaScript enabled or not... I'm just going to use code/script that 99% of browsers can understand and if they are disabling JavaScript then I want code in place to make up for it. I'll have to read up on that unobtrusive scripting. Sounds just like what I am trying to do.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61756
    
  67

To those ends, adopt a library such as jQuery and your life will be much simpler.
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
I just looked JQuery up.... "Just as CSS separates "display" characteristics from the HTML structure, jQuery separates the "behavior" characteristics from the HTML structure. For example, instead of directly specifying the on-click event handler in the specification of a button element, a jQuery driven page would first identify the button element, and then modify its on-click event handler. This separation of behavior from structure is also referred to as the principle of Unobtrusive JavaScript."

Sounds like a great idea. Keeping behavior seperate from the display is common programming sense.

Here comes the biggest newb question of all... I'm still kinda confused as to how JS or JQuery work. I didn't download or install anything to start using JavaScript... I just typed it into my html and opened it in the browser. I assume the browser I am using either comes with a JavaScript library or it was added on at some point without me paying attention. I also assume to use JQuery I need to download/install something to get it to work correctly. If someone else opens a page I wrote does it convert the JQuery into 1 HTML page with embedded JavaScript? If so, does it check to see if they even have JavaScript? I'm just not understanding how you could use JavaScript unobtrusively.... if some "behavior" is disabled then how do you have a page worth showing at all?

Sorry for all the questions... I always spend a lot of time wrapping my mind around how something works before getting to into it.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61756
    
  67

Brian Legg wrote:I assume the browser I am using either comes with a JavaScript library

Yes. the JavaScript engine is built in to the browsers.

I also assume to use JQuery I need to download/install something to get it to work correctly.

Yes. jQuery is a JavaScript library and you import it into your page just as you would any other external javaScript.

If someone else opens a page I wrote does it convert the JQuery into 1 HTML page with embedded JavaScript?

No. The JavaScript file is downloaded and added to the page by the browser. jQuery isn't a new language; it's just JavaScript.

If so, does it check to see if they even have JavaScript? I'm just not understanding how you could use JavaScript unobtrusively.... if some "behavior" is disabled then how do you have a page worth showing at all?

That's the art of Unobtrusive JavaScript. The page is written to be at least minimally functional without the use of script. Then, if JavaScript is enabled, the script enhances the page with all the dynamic things that are possible with scripting.

Obviously people who have JavaScript turned off will not get any scripted behaviors. They'll just get whatever's possible with the "normal" HTML links and form submissions.

Sorry for all the questions... I always spend a lot of time wrapping my mind around how something works before getting to into it.

Questions are why these forums exist.
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
Thanks Bear, that clears up a lot!

I have a few other generic questions, but I think I will save them up and make a new thread. The code problem was solved so I should let this one die.
Brian Legg
Ranch Hand

Joined: Nov 07, 2008
Posts: 488
Also, to anyone looking at my code... the CSS was combined with the HTML for simplicity. I normally keep them seperate.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: JavaScript Newbie Simple Problem