JavaScript - Newbie Question About Using Arrays As Objects
hi.
i know a little php, but new to javascript. much of the syntax is identical. i'm reading the new rhino book (flanagan 6th). in it, where he introduces METHODS, he says "When we combine FUNCTIONS with OBJECTS we get METHODS". Then he creates an empty ARRAY: Code: var a = []; then he uses the "push() method" to add elements to the array. Code: a.push(1,2,3); uh, methods are for *objects* right? Yet he is using them on an ARRAY. Can somebody help me see the light on how an array can magically becomes an object that is manipulated by a "method"? I mean, the array is still an array, no? It never actually becomes an object, right? Yet we still use a *method* to manipulate it. See my conceptual quandry? Similar TutorialsHi Everyone I am trying to write some code to create an object in JS that contains the x,y coords for a shape i wish to draw. I create the shape, and then in a draw function I draw the shape to the screen from the object I created erlier. Trouble it is does not seem to work :S have anyone got and ideas? Code: var myShape = new newShape(200,200); function init() { canvas = document.getElementById("canvas"); ctx = canvas.getContext("2d"); return setInterval(draw, 50); } // init function newShape(x,y){ this.un_X=x this.un_Y=y function drawAll() { ctx.beginPath(); ctx.arc(un_X,un_Y,30,0,Math.PI*2,true); ctx.closePath(); ctx.stroke(); } // drawAll } // newShape function draw() { ctx.clearRect(0, 0, WIDTH, HEIGHT); myShape.drawAll(); } // draw init(); Thanks in advance I am having some issues with my code... The code is supposed to ask for an average of the values in the numeric property (Cost), which works, but it repeating itself twice. Also, I need to calculate and display the number of elements of (Cost), whose numeric property values is greater than the average. ANY help is highly appreciated ... Thanks! var expense = new Array(); var loop; var property; var numExpense; var LOOP_START = 1; var average = 0; var numberAverage = 0; numExpense=parseInt(prompt("How many expenses?")); for (loop = 0; loop < numExpense; loop++) { expense[loop] = new Object(); } expense[0].Name = prompt("Expense Name?"); expense[0].Cost = parseFloat(prompt("Expense Cost ?")); expense[0].Type = prompt("Expense Type?"); expense[0].Location = prompt("Expense Location?"); for (loop = LOOP_START; loop < numExpense; loop++) { expense[loop].Name = prompt("Expense Name?"); expense[loop].Cost = prompt("Expense Cost?"); expense[loop].Type = prompt("Expense Type?"); expense[loop].Location = prompt("Expense Location?"); } document.write("<br /> <h2> Expenses </h2>"); for(loop = 0; loop < numExpense; loop ++) { for(property in expense[loop]) { document.write("<br />Expense # " + (loop + 1) + " " + property + " : " + expense[loop][property]); } document.write("<br />"); } for(loop = 0; loop < numExpense; loop ++) { for(property in expense[loop]) { average=expense[loop].Cost/numExpense } document.write("<br />Average Cost: $ " + average); } for(loop = 0; loop < numExpense; loop ++) { for(property in expense[loop]) { parseInt(numberAverage) = numExpense > average } document.write("<br />Number of expenses more than Average: $ " + numberAverage); } Hey Coding Forum, Hey as you probably know iam new here as i probably haven't even posted this in the correct place but i have a real problem with my JavaScript and i can't get it to do what i would like. I have to write a code to show a new array to represent the third row of a table (var myarray value of which are "60","80","187","180","114" , and creating an array of the required length. Which i have done. (i Think ) I now need to write the remainder of the JavaScript needed to calculate the average height of the objects and write it out in the browser window. It need to write average height 17.2 cm. I have included my script below and but i am not understanding how to work out the average, i believe i need to add another 'for loop' but i can't get it to work correctly. (i might be being completely stupid) If anyone would be able to help it would be GREATLY appreciated. Thanks for all help. <HTML> <HEAD> <TITLE> Test Experiment </TITLE> <SCRIPT LANGUAGE = "JavaScript"> var height = [15,16,17,18,19]; var number = [4,5,11,10,6]; var myarray = new Array(5) var myarray = ["60","80","187","180","114"] ; var values = [60, 80, 187, 180, 114]; var total = 0; for ( var i = 0; i < values.length; ++i ) { total += values[i]; } var myarray = total + values.length; document.write('average height of the object is ' +myarray + '<br>'); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> Can someone please tell me why there is an error with my code (see in red below). I am told that 'process' is not an object or is null and I don't understand why or the implications with the click event which I am trying to capture and pass to my function: Javascript Code: Code: var USStates = new Array(50); USStates[0] = "Alabama"; USStates[1] = "Alaska"; USStates[2] = "Arizona"; USStates[3] = "Arkansas"; USStates[4] = "California"; USStates[5] = "Colorado"; USStates[6] = "Connecticut"; USStates[7] = "Delaware"; USStates[8] = "Florida"; USStates[9] = "Georgia"; USStates[10] = "Hawaii"; USStates[11] = "Idaho"; USStates[12] = "Illinois"; USStates[13] = "Indiana"; USStates[14] = "Iowa"; ... var stateEntered = new Array(50); stateEntered[0] = "1819"; stateEntered[1] = "1959"; stateEntered[2] = "1912"; stateEntered[3] = "1836"; stateEntered[4] = "1850"; stateEntered[5] = "1876"; stateEntered[6] = "1788"; stateEntered[7] = "1787"; stateEntered[8] = "1845"; stateEntered[9] = "1788"; ... var process = document.getElementById("search"); process.onclick = getStateDate; function getStateDate() { var selectedState = document.getElementById("entry").value; for (var i = 0; i < USStates.length; i++) { if (USStates[i] == selectedState) { break; } } if (i < USStates.length) { alert(selectedState + " entered the Union in " + stateEntered[i] + "."); } else { alert("Sorry, '" + selectedState + "' isn't a US State."); } } HTML Code ( in case you need it): Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Loops</title> <script type="text/javascript" src="loops.js"></script> </head> <body> <h2>Enter a US Sate in the field below and click the 'submit' button to get the date of entry in the union</h2> <form action="process.php"> <input type="text" id="entry" name="entry" /> <input type="button" id="search" name="search" value="submit" /> </form> </body> </html> Do arrays retain its data outside of a function. The reason why i asked this is because i created a global array and then a function. In the function i assaigned values to the global array but when i try to access the global array it gives me a "undefined" or "null" error. Code: var myArray = new Array(); var count = 0; function populate(){ for(i=0; i < 5; i++){ myArray[i] = count++; } } Hello guys, I'm new to this forum and to Javascript. I need to make a very simple website to check whether a ticket number is valid or not. I have created an array with all the codes necessary, but when I try to loop through it, the only thing that works as it should is the first element of the array. Basically, I want the code to display Correct!, if there is a match between user input and array, or Wrong if otherwise. Here is my code: Code: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Untitled Document</title> <script type="text/javascript"> function validate() { var list = new Array; list[0]="zDv5BXAc"; list[1]="6YXF3Qwj"; list[2]="k8UKpgwo"; var code= document.getElementById("code"); var name = document.getElementById("name"); for(var i=list.length-1; i>=0; --i) { if (code.value == list[i]) { document.all.confirm.innerHTML = "Correct" } else document.all.confirm.innerHTML = "Wrong" } } </script> </head> <body> <input name="Name" type="text" id="name" size="50"> <input name="Code" type="text" id="code" size="10"> <input name="Check Code" type="submit" value="Verify" onClick="validate()"> <div id="confirm"></div> </body> </html> I'm in a computer coding class, and I'm having a bit of trouble with Javascript. I'm not looking for anyone to do my homework for me, but any hints you could give me as to why this code isn't working would be greatly appreciated. Basically, I need an empty text box where the user enters their guess as to my age. The user enters their guess, and then gets an answer as to whether their guess is right, too high, or too low. The page looks right, but I can't get the function to work. Thank you... <html> <head> <script> function howoldami(age) if(age=23) { alert("You guessed right!"); } else if { (age>23) alert("I'm not that old."); } else { alert("I'm not that young."); } </script> </head> <body> <form> Guess My Age!<input name="age"><br> <input type=button value=Guess! onclick="howoldami(age.value)"> </form> </body> </html> Hello, I'm in the process of getting a better understanding of javascript (instead of just copying and pasting JQuery script onto my site). So I have a(dumb?) question. Can I name a var what ever I want? For example, var car_name("Ford Escape"); Or am I misunderstanding this? THanks. Hi Everyone I'm learning Javascript with varying degree's of success but am very much in the early phase. My question/problem is this: [ICODE]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <script language="javascript" type="text/javascript"> var degFahren = new Array(212, "string data", -459.67); var degCent = new Array(); var loopCounter; for(loopcounter =0; loopCounter <= 2; loopCounter++){ if(isNaN(degFahren[loopCounter])){ alert("Data " + degFahren[loopCounter] + " at array index " + loopCounter + " is invalid"); continue; } degcent[loopCounter] = 5/9 * (degFahren[loopCounter] -32); } for (loopCounter =2; loopCounter >=0; loopCounter --){ document.write("Value " + loopCounter + " was " + degFahren[loopCounter] + " degrees Fahrenheit"); document.write(" which is " + degCent[loopCounter] + " degrees centigrade<br />"); } </script> </body> </html> /ICODE] The following code does not return any errors in my browser but I'm confused since I'm sure I should be seeing an alert box telling me that there is invalid data entered bu this doesn't happen, also as far as I can make out I should only be receiving an error for the 2nd loop but there seem to be an error message returned for all 3 loops?? This is all possibly correct but I'm learning from a book and I have no-one to ask these mundane questions to. Any help would be greatly received. Sara This is what I am aiming for. I want to be able to click on a word that would then write text in a specified area. This is what I came up with but it writes it at the top of the page and only for a moment then disappears.... These are my clickable words Code: <a href="#textarea" onClick="MathHomework('W2')">Week 2</a> <a href="#textarea" onClick="MathHomework('W3')">Week 3</a> the anchor named 'textarea' is where I want the output to be written which is placed on my html page. This is my newbie script Code: <script type="text/javascript"> function MathHomework(week) { if (week == "W2") document.write("<p>Review Chapter Twelve</p>"); else if (week == "W3") document.write("<p>Final Chapter Review Test</p>"); } </script> <a name="textarea"> (text area for javascript output)</a> so is my onclick syntax wrong maybe? and yes I have read rule#5 and I am trying to understand my mistakes. Thank you in advance Thinking in Objects 4 objects w/constructors/overloads min 3 properties on each min 3 methods total was just wondering if anyone had any good links or tutorials to get me started on my first javascript assignment Hi! Im new to the world of javascript, so bare with me. It might be a stupid question but i got a input form, i know how to get the data in but i need to single out one of the numbers. the input looks like: xxxxxx-xxxx I've tried almost everything that i can think of... A nudge in the right direction would be appreciated. Hi, I am just beginning out with Javascript and trying to complete a simple login page. Clicking on the Login button should bring up a message 'Access authorised' or 'Access denied' in the 'output' div of the page. Unfortunately only 'Access Denied' displays, even if the password entered is correct. There are no messages displayed in the Error Console. Any advice greatly appreciated! Code: <html> <head> <title>Function Example</title> <script language="javascript" type="text/javascript"> function isAccessAuthorised(enteredPassword) { var result; if(enteredPassword=="password") { result=true; } else { result=false; } return result; } function buttonClicked() { var isAuthorised = isAccessAuthorised("enteredPassword").value; if(isAuthorised==true) { document.getElementById("output").innerHTML=<p>Access authorised</p>; } else { document.getElementById("output").innerHTML=<p>Access denied</p>; } } </script> </head> <body> <form> <input type="text" id="username" /> <br/> <input type="text" id="enteredPassword" /> <br/> <input type="button" onClick="buttonClicked()" value="Login"> </form> <div id="output"> </div> </body> </html> I've had several problems with document.getElementById() and haven't been able to find a reason for this. I've searched these forums and I'm sorry if I've still managed to miss if there's an answer to this, as it seems to me to be a basic question. When I use getElementById() it keeps returning as 'undefined' in both FF och IE. I've had to use getElementsByName() instead, and since I only have one element, I have to write element[0] to make it work which seems rather redundant. This is parts of my JS code: Code: var postName = document.getElementsByName("postName"); //getElementById doesn't work here var postText = document.getElementsByName("postText"); //...nor here. if (postName[0].value == "" && postText[0].value == "") { document.getElementById('feedback').innerHTML = "Some text."; //For some stupid reason getElementById works here! } And the HTML looks somewhat like this: Code: <div class="addName" id="addName"> <input type="text" name="postName" id="postName" class="textBox"></input> </div> <div class="addText" id="addText"> <textarea class="textarea" name="post" id="postText"></textarea> </div> <div class="feedback" id="feedback"></div> I don't see why it wouldn't work, but this isn't the only time it's happened so I must be missing something. Anyone who can enlighten me as to what that is? I have yet to have my ah-ha moment with Javascript but I think its coming soon. there are small things that seem to be baffling me and Im hoping posting to the forums to get help from people of limitless wisdom. What exactly does the "|" mean in this code? or I should say what does it do? Code: document.template.Aprod_string.value = document.template.Aprod_string.value + "|" + string_recode(Aprod_array) ; Hi, I'm just starting out with a few bits of javascript and have hit a problem. The story is this: I have a basic HTML page that I want to display using a different css file depending on the page that the request comes from. I though I'd do this by appending "?cs=a" or "?cs=b" depending on the calling page. My problems are occuring whilst trying to read the data in the URL (querystring?) The code below is meant to be a bit of a debugger sort of affair in that it should display the variables but for the life of me I can't get it to work. The problem is that none of the variables seem to be getting populated with data, therefore nothing is displayed on the page and no css file is loaded. I'm pretty sure its something relatively simple so would appreciate if an expert could cast their eye over what I have below and point out the error of my ways... Code: <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <SCRIPT type="text/javascript"> var thequerystring = new String(Request.QueryString("cs")); if (thequerystring == "a") { cssfile = "css1.css"; } if (thequerystring == "b") { cssfile = "css2.css"; } document.write('<link href="'+cssfile+'" type="text/css" rel="stylesheet">'); </SCRIPT> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <p><span class="texttype">hello</span></p> this should change the format of the text depending on the css file that was loaded... in theory!! <p> </p> <p>Here is a list of the variables and their values... <script type="text/javascript"> document.write('<b>Some variables...</b><br>'); document.write('cssfilename: '+cssfile+'<br>'); document.write('Querystring text: '+thequerystring+'<br>'); </script> </p> <a href="javascript: history.go(-1)">Back <-- </a> </body> </html> Many thanks in advance Dan Hi, I am working on a project which requires a method to join or split multidimensional arrays according to its arguments, which would be string delimiters for the various dimensions of the array. An example of the join function might be: Code: arr[0]=[1,2,3] arr[1]=[4,5,6] arr[2]=[7,8,9] alert(arr.join_multidimensional_array(".","|")) The above would alert "1.2.3|4.5.6|7.8.9" The split function: Code: var str = "a.b c.d.e f"; str = str.multidimensional_split("."," "); This would turn 'str' into an array like this: Code: str[0] = ["a","b"]; str[1] = ["c","d","e"]; str[2] = ["f"]; // or just str[2] = "f"? Any ideas on this would be much appreciated, I've been trying to work out how to code it for hours. Thanks, Gus EDIT: I think I may have found the problem (but not the solution) - it looks as though javascript won't perform a method on an array which is part of another array. Firefox error console gives me "arr[0].join is not a function". hi. i know a little php, but new to javascript. much of the syntax is identical. in reading the new rhino book (flanagan 6th), he gives the following example: Code: var square = function(x) { return x*x; }; okay, but then he does this: Code: square(plus1(y)) as an example of "invoking two functions in one expresson". (Prior he gives an example of defining a function with plus1, which is how I normally think of functions.) uh, square is a *variable*, but he is using it as a FUNCTION. Can somebody help me understand how this can be? how it works? I'm having trouble conceptualizng how we use a variable as a function. Not much programming experience, but some C++ and Python. I would like to make a web page that 1. flashes and image for 1 second 2. flashes a a pair of images for 1 second 3. displays an image and waits 4. Wait for a certain correct keystroke to be entered. 5. Repeat 1-4 a few hundred times. ^The above would iterate through a loop, say of 300 counts, and sub-iterate through an array of images, say 30, going through all 30 images 10 times for example. Oh, and the array elements would be displayed in random order. Also, I would like to keep track of errors (wrong keystroke) and time it took to enter correct keystroke. I would prefer that this webpage work on the iphone, even older ones. Java is limited on iphone? I tried playing a Java chess game and had no luck on iphone. So, would I be able to do this using Javascript? If not, Java would be best? As I said, I would prefer iphone compatibility, but it is not required. I just want to know which one I should use before I bury my nose in a book about programming Java or Javascript. |