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'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 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 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...
Since upgrading from 1.4.x to 1.6.1 all the code that selects the contents of an XML attribute by the name of 'value' has stopped working. Upon investigation, any time you do
$(someXMLObject).attr("value")
now always returns 'undefined'. This worked fine in previous versions and currently is preventing us from upgrading. I know the obvious solution would be to change the attribute name from 'value' to something else, but this would require some real effort on our part as a lot of our front end code is assuming an attribute of 'value' be passed in.
My question is, is this bug likely to be fixed in a forthcoming release of JQuery or should we implement the necessary workarounds on the assumption that this isn't being worked on?
$.post, it calls a php file which retrieves data from my database and should return a JSON datatype result. I checked on firebug, and it does successfully retrieve the data in JSON format. I however cannot get it to display on screen. I want to populate input fields with the result accordingly.
Here's a chunk of my javascript: (this function is being triggered by a dropdown) function updateBillingAddFields(address_book_id) { jQuery.post("ajax_checkout_confirmation.php", { address_book_id: address_book_id, action: 'get_shipping_add_details' }, function(data){ var form_element = document.forms['address']; form_element.elements['entry_name'].value = data.entry_name; form_element.elements['entry_addr1'].value = data.entry_addr1; form_element.elements['entry_addr2'].value = data.entry_addr2; form_element.elements['entry_addr3'].value = data.entry_addr3; form_element.elements['entry_addr4'].value = data.entry_addr4; form_element.elements['entry_postcode'].value = data.entry_postcode; form_element.elements['entry_state_name'].value = data.entry_state_name; }, "json"); } I tried putting alert inside my function, and it also doesn't show. I'm thinking it doesn't go inside the function at all.
The white my notes section on the bottom left is a div area that is loaded with an Jquery Ajax call just like 2 other areas on the page. This works fine in IE, Safari (PC), Chrome but not in Firefox. It just shows blank white.
I am having a strange problem with a javascript function that does not return the value but returns the code inside the function. My best guess is that I am incorrectly calling the function hasLandedOn()and jquery is interpeting it. Why is this happening? I highlighted the parts in red.-Tom ReeseThe following is returned NOT the variable imageName.
function hasLandedOn(){ var selectorLoc = $("#selector").offset(); var imageName = "";
I'm building an application that uses calendars extensively, I have single calendars returning nicely but I working on a section that can return multiple calendars (eg. yearly overview) between certain date range ranges. It's working fine but the calendars are appended to the div when the server responds and not in the sequence they are called.
Here's the code I'm using:
Code:
function displayMultiCalendars(date1,date2,a) { $.get("<?=base_url();?>cal_center/get_date_range_total/"+date1+"/"+date2, function(data) {
[code].....
So, is there any way of making sure that they return in sequence? I'm sure there's another/better way of looping but I'm not the best with the js/jquery.
This routine used to work when I was using jQuery 1.3.2. Now that I've switched to 1.4.2 it fails. I've verified that returning to 1.3.2 fixes the problem.
I have a page which includes this select pulldown:
Either I'm having a really dim Friday, or something strange is going on. I'm trying to add a method to the Validator plugin, using the following regex:
Today I've tried to create simple hover effect on a <div>: if the cursor is over the box, the background-image css property of the div is modified. On the HTML side, a <div> with an id:
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 have a for loop which has a length of 8. It's meant to run through an array of objects and bind a click function to all of them. So the alert should run a range 0-7 but instead it returns 8 no matter which object is being clicked.
The goal is to change the source on the fly (as with a firefox extension webdev or another or even Greasemonkey) to add a link. Until then, easy does it work well. This link launches an application ajax jquery like: $.get(...) or even $.ajax(...)
If I'm on [URL], added my link, I click and it works, I see the ajax request and pass my "alert ()" gives me the return of application. Great! But if I'm on a site other than mine (the url of the ajax request is [URL] while I'm at [URL] for example), the return of the ajax request is empty.