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?
Getting the following error when attempting install of jQuery-1.4.2.min.js Line: 16 Char: 1 Error: 'window' is undefined Code: 800A1391 Source: Microsoft JScript runtime error
I am just trying to learn a little bit about jQuery.Now I have a problem with returning a value from a function.The following code works fine, when I tested it with alert(price) or any other way of echoing the value directly. But if I try something like var test = getPrice(324), the variable test would always be undefined.
function getPrice(id) { $.get('db.xml', function(d){[code]....
I assume that the nested functions are part of the problem,
How to know the execution time of a function? For example, which of these functions run in less time? That is, which of these functions are more weightless to run? document.getElementById("my_image").src = "images/picture.png"; //or document.getElementById("my_image").style.webkitTransform = "rotate(45deg)";
No syntax errors - nothing should be getting in the way of this. All I'm trying to do is implement a different an "onclick" call, which calls the function and AJAXes in some values. Here's my code:
Is there a function that will allow my web page to pause() waiting for a keypress and then continue rendering the page? I have a web page in PHP that displays some data that I need to see before it calls another web page.
I currently have a situation where I have images that load when a user scrolls to the bottom of a page. I also have part of the same function call .remove() on the top 2 images if the number of currently loaded images exceeds 10. The trouble that I am having lies in the .remove() is causing the scrollbar to move down, calling the image-loading part of the function again (essentially a chain reaction of image loads and elements being removed if a user scrolls down while images are being loaded).
I was wondering if I can use setTimeout or a similar function to prevent .remove() from executing until images have been completely loaded?
$("#message").html(calcScroll); if (calcScroll == 0 && curPageIndex + 1 < totalCount) { $("#message").html("loading new images"); window.setTimeout(function () {
I have the code which rotates a gallery, when I click pause it stops the gallery rotating - what i'd like it to be able to click it again to start it rotating again. Probable really simple.. Code:
var category_list = document.getElementById('category_list'); var dom_div = document.createElement('div'); dom_div.id = 'content' var dom_link = document.createElement('a'); dom_link.href ='#' dom_link.onclick = displayDiv(); val = document.createTextNode('Click'); dom_link.appendChild(val); dom_div.appendChild(dom_link); category_list.appendChild(dom_div);
The displayDiv Funcion
function displayDiv() { dv = document.getElementById('content'); //Here is the error. }
The Problem is when the following script:
dom_link.onclick = displayDiv('content'); is executed it is calling the function displayDiv(name) Here we have the code document.getElementById('content'); which throws the error.
The reason is the div container is not yet created.
What I need is the function should be called only on the click event. It should not be called while I define it to the Click Event. (ie it should not be called at the time of defining) How to achieve this.
I have a function that I'm trying to modify. It adds an element to the page. The problem is, I require that ClickGeocode() finishes executing before the rest of the code in the function completes. Currently that is not the case..
i have this type ofsituationin my code, now many time function three is called before first and second complete execution.i want third to wait until first and second finish execution, dont want to use delay
I have a page that I click an edit button. Upon clicking the edit button, another page is loaded via ajax, and displayed inside a <div> tag. During the new page that is loaded, I am pulling some field's properties to see if they are filled in, and if they are, then make them a certain color. Currently, on slower internet connections, this PageLoad function will not work because the pageload function is ran before the page is actually loaded.
So, I am looking for a solution to check to see if the page is loaded, completely, then I want to run the PageLoad function. Here is the function from the click of the button that says "edit". This calls the page to display:
I want to change the elements class name dynamically when mouse is out with respect to that element.I want to change the class name after some delay (i.e, i am using settimeout function).
var ulNodes = getElementsByClass("nice-menu"); var liNodes = null; for(var i = 0; i < ulNodes.length; i++) { liNodes = ulNodes[i].getElementsByTagName("li"); for(j = 0; j < liNodes.length; j++) { if(liNodes[j].className == "menuparent") { liNodes[j].onmouseout=function(){ timer = window.setTimeout(function (){ this.className = "menuparent"; //My problem is with //this line },4000); } } } }
I need to set the elemets class name to "menuparent" after some delay after the pointer moves away form that element.
-> When ever i say alert(this.className); in the setTimeout function, the alert box says undefined. -> I can succesfully alert any where else in the mouseout function except within the settimeout function in mouseover function of that element.
It seems like it just runs the last setTimeout line and pops out all at once. I've even tried adding a=, b=, c=,. etc at the begining of each line to no avail.
does anyone know if the setTimeout() function in js has been just recently supported? i created an online demonstration of a product that uses this function to delay the playing of .wav files after various second intervals. i know that Opera doesn't support this function because when I click my button, all of the .wav files that i have in the function that runs behind the button play at once. i have probably 10 wav files that are played throughout the function, at various conditional statements. does anyone know if earlier (like REALLY old) versions of IE do not support this function? or maybe ie8 doesn't support it? i developed this and tested it in all major browsers except IE8 and any version earlier than IE6.
I did search the forums but couldn't seem to find anything on this specifically. I basically need to pass a key event and a 'name' to nameCheck() after 3 seconds. This works fine in Firefox but Internet Explorer gives the error: Member not found. I'm more of a PHP guy than a JS one
<input type="text" onkeyup="nameCheckTimer(this.value, event)" value="" /> function nameCheckTimer(name, evt) { setTimeout(function(){return nameCheck(name,evt)}, 3000); } function nameCheck(name, evt) { //need name and the key event to be available here. I have code to handle the key codes which works fine }
I am trying to use the window.setTimeout feature so that a message pop-up with yes/no appears on the screen asking whether to extend the session.*If yes is clicked, the current page reloads.*If no is clicked, nothing happens. (the session will expire anyway).
I have written the following code (quite meaningless. Just to check why setTimeout is not working in a similar real-life code) to enable the user to input a given time interval (hh:mm:ss) when a p is clicked, and then alerting the user with the time entered in the seconds portion one second after the div is clicked. But it is not working. I think the setTimeout is the culprit, the way I am passing parameters to the function inside it, but don't know where exactly am I erring.