Suppose we have following javascript codes: Case 1. var foo = function (){ var x = "hello"; var bar = function () { alert(x); } return bar; } var bar_ref= foo(); document.write(bar_ref()); // it pops up "hello" and print-outs "undefined".
If we modified above code slightly, shown as follow: Case 2. var foo = function (){ var x = "hello"; var bar = function () { alert(x); } return bar(); } var bar_ref= foo(); document.write(bar_ref()); // it only pops up "hello".
As you can see, Case 2 modified the return value from "return bar" to "return bar()," which won't cause the "undefined" output. To me, it looks like when the JS interpreter executes the line "bar_ref();" it triggers the execution of function "foo", besides both "return bar" and "return bar()" do the same job which is to execute function body of "bar".
The only difference is that after the execution of function bar, its function body does not exist anymore, so when the interpreter executes the line "return bar;" it follows the function identifier "bar" and ends up with "undefined". This is why the Case 1 gives us "undefined", but I am not quite clear about why the Case 2 can trace down to the function body of "bar". Do you have any ideas about such difference outputs?
Here is a code I use to calculate distance b//w 2 places using google api. It works perfectly and shows the results in the html but when I add a return statement at the end of the function showlocation() it returns undefined.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[URL]"> <html xmlns="[URL]"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <meta name="robots" content="noindex,follow" /> <title>Calculate driving distance with Google Maps API</title> <script src="[URL]" type="text/javascript"></script> <!-- According to the Google Maps API Terms of Service you are required display a Google map when using the Google Maps API. see: [URL] --> <script type="text/javascript"> var geocoder, location1,addr1,addr2, location2, result1,gDir; function coolAl(add1,add2) { addr1=add1; addr2=add2; var result= return initialize(); showLocation(); alert(result); } function initialize() { geocoder = new GClientGeocoder(); gDir = new GDirections(); GEvent.addListener(gDir, "load", function() { var drivingDistanceMiles = gDir.getDistance().meters / 1609.344; var drivingDistanceKilometers = gDir.getDistance().meters / 1000; result1=location1.address + ' (' + location1.lat + ':' + location1.lon + ')/' + location2.address + ' (' + location2.lat + ':' + location2.lon + ')/' + drivingDistanceKilometers + ' kilometers'; document.body.innerHTML=result1; return drivingDistanceKilometers; }); } function showLocation() { geocoder.getLocations(addr1, function (response) { if (!response || response.Status.code != 200) { alert("Sorry, we were unable to geocode the first address"); } else { location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address}; geocoder.getLocations(addr2, function (response) { if (!response || response.Status.code != 200) { alert("Sorry, we were unable to geocode the second address"); } else { location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address}; gDir.load('from: ' + location1.address + ' to: ' + location2.address); }});}});} </script></head> <body onload="coolAl('pune','mumbai')"> </html>
I want to call java function in javascript.In which we pass one parameter to function and its returns String value which I want to display in alert message.
i used the String.length(string) function in javascript to get the length of string but nothing happened. It doesn't give me a value when i tried to view the result using an alert function. Actually, this kind of problem does not only exist with the length function, it's also the same with the trim(). I have not tried using other functions but perhaps it won't also work. What could be the possible reason for this?
How would you go about writing a function that returns a string that outputs a branched bulleted list using <ul> and <li> tags of all the html elements in a page? The html elements don't all have id's or names, so I cannot reference them directly. I would like to do it recursively so that I can grab all the elements, not just those two or three levels deep.
I'm brand new to jquery, and am trying to set up a dynamic navigation dropdown which is populated with XML by our system (which I can't change.) For some reason, IE6 is showing space where the unused <li></li> tags are. I am trying to create a jquery code which will detect whether or not a link is present in the <li> so I can turn the display off or on dynamically. The relevant jquery code is here:[code]It should eventually appear like this, the way it does in Firefox due to CSS styling:[code]Which means that somehow, it is reading the <a> even when there isn't one.
I have a homework assignment which is pretty simple. It is a grade calculator that uses arrays to gather the grades from the user. This is what I have for the problematic section:
var homework = new Array(2);/* The grades entered by the user for Homework 1, 2, and 3 */ var project = new Array (3);/* The grades entered by the user for Project 1, 2, 3, and 4 */
[Code].....
My problem is the document.write portion of the code, where it is supposed to return either homework[0], project [0], or exam[0], it instead returns undefined. There is no problem with any other subscript. And yes, it does successfully prompt me for each of the [0] subscripts in the first part of the code. Am I just missing something that is right in front of my face? Does all arrays not start with the [0] subscript?
I started getting a wierd problem with my jscript program. Here im using jscript for client-side validation and upon email field submission,im getting undefined value with an error saying "length is null or not an object". All the values of fields prior to that are being obtained properly.
I'm doing something with grails + jquery. My controller send a rendered json (which I know is sending correctly) but when the object "arrives" in the callback method it comes undefined. I can see it lenght, but not it's content.
I am trying to access the width variable from my main page. Within the imageinfo.js script functions I can alert() the width value which returns 1024. But I can't seem to pass this variable to my main page or access it directly so that I can use document.write() to write the variable on the page. Whenever I try to call the 'width' variable directly from the main page I get undefined. How can I access this variable? However, with the test code below, I was able to get ducument.write() to write the 'width' variable on the page but now the page doesn't stop loading - there's an endless loop in the code...
The following function takes three different fields (which combined make up a phone number) and tests it to make sure that all the characters entered are integers. If this is true, it sets form.Phone.value = entirephonenumber. I would like to incorporate an additional test which, after determining that all characters in the string are integers, checks to make sure that the string length is 10. If it is less than 10 or more, I want the entire function to return false and display an error message (the same one is fine..) Code:
I have a form with an id "modClassForm" when I try:$("#modClassForm").serialize() it returns an empty string ("") When I get the action attribute it's right so it is the form I was expecting. When I do the following:
$("#modClassForm input").val()
it returns "retret" (the contents of the input element in that form). So what is doing this? The only thing I can think of is that this form is loaded from ajax and then placed in the page using the .html(htmlString) method which is rather core to my design. This works in a whole lot of other browsers (IE 9, FF 6-8, Chrome 13-15 and Safari 5). So I know I could try to serialize the fields myself, but the form content has two modes and I'd have to construct a fairly large string and I'm not sure about encoding. Is there any other way to make serialize work? Some way to get it to recognize the contents of the form?
How would I go about outputting something when a database value is being changed?
e.g. If im typing in a text field, which is saving what ive typed every time i keyup into a database field, it then shows on another page on another user computer as "User is typing something in field X"?
If no typing is happened, i.e. the database field value is not changing, nothing is echoed out.
It would also be cool to have something show "User is deleting text from field X" when the field value is getting shorter.
In pseudo code, something like if the value of database string is bigger than 100ms ago, echo out "user is typing something in", and conversly, if string is getting shorter echo out "user is deleting stuff".
I have a following string: var myHTML = "<html><body>testing hope this work in html</body></html>"; alert($(myHTML).children("body").html()); Why does the alert return NULL, instead of "testing hope this work in html" ???