JavaScript - Getting Nan Error With Simple Math
I am at a lost, new to JavaScript and not sure why I am getting Nan
Code: <script type="text/javascript"> var num1; var num2; var num3; var ave_num=Math.round((num1 + num2 + num3) / 3); //follow prompts to enter numbers and print average </script> Similar TutorialsI'm a student learning javascript, I'm having a very basic problem. I have to write a script that outputs XHTML text that keeps displaying in the browser window that multiples of the integer 2, namely 2, 4, 8, 16, 32, 64, etc. This is the code i have, Code: <!-- var product=2; while { product =2*product; } document.writeln( +product+ ); // --> And it pretty much does nothing. Help would be much appreciated Dave Hi. I am new to javascript programming so please go easy on me. I am creating a site for a flooring store and need to include a price calculator/estimator. What I need to do is allow the visitor to input the room size (length x width) and choose a flooring material from a pulldown list, and receive a price. The pulldown list would have flooring materials such as carpet, tile, wood, etc and each of these would have a fixed dollar amount associated with them (which would be hidden). So basically it is just a script that would multiply 3 numbers, with two of the numbers being input by the visitor, and th tird being selected from the pulldown. Can someone please educate me on how to do this? Hi. I am new to javascript programming so please go easy on me. I am creating a website for a flooring store and need to include a price calculator/estimator. What I need to do is allow the visitor to input the room size (length x width) and choose a flooring material from a pulldown list, and receive a price. The pulldown list would have flooring materials such as carpet, tile, wood, etc and each of these would have a fixed dollar amount associated with them (which would be hidden). So basically it is just a script that would multiply 3 numbers, with two of the numbers being input by the visitor, and the third being selected from the pulldown. Can this be done with Javascript, and can someone please educate me on how to do this? Having trouble with the alert(Math.round coding. "r" is the results or final value, and I want to divide this result/final value by "f" I have alert(Math.round(r / f) + ' calories/day to burn); but I its coming up saying NaN calories/day to burn. How do I divide "f" into "r" correctly? Code: } function calculate() { var f = document.forms[0], g, w, f, h, a, l, r; for (var i=0; i<(f.length-1); i++) { if (f.elements[i].selectedIndex == 0) { alert('Sorry, all options must be selected.'); return false; } } g = f.g.options[f.g.selectedIndex].value; w = f.w.options[f.w.selectedIndex].value; h = f.h.options[f.h.selectedIndex].value; a = f.a.options[f.a.selectedIndex].value; l = f.l.options[f.l.selectedIndex].value; if (g == 'm') { r = ((66 + ((13.7 * w) / 2.2) + (5 * h * 2.54)) - (6.8 * a)) * l; } else { r = ((655 + ((9.6 * w) / 2.2) + (1.8 * h * 2.54)) - (4.7 * a)) * l; } alert(Math.round(r) + ' calories/day is what you require'); alert(Math.round(r / f) + ' calories/day to burn); return false; (just started JS 2 weeks ago) -- this is also my first time posting here, if my post isnt following the proper template let me know and Ill fix it .. Thanks so much for taking the time to check this out in advance Im trying to make the first ul tag in the each slideMenus[] array index values have a position of left = 0px I keep recieving this error however ____________________________________________________ Error: slideMenus[i].getElementsByTagName("ul").style is undefined Line: 63 ------------------------------------------------------------------ the script in question is in [code]. Could someone tell me if I am just making a syntax error if not ill try redoing the whole thing. window.onload = makeMenus var currentSlide = null var timeID = null leftPos = 0 function makeMenus(){ var slideMenus = new Array() var allElems = document.getElementsByTagName("*") var slideListArr = new Array() for(var i=0 ; i < allElems.length ; i++){ if(allElems[i].className = "slideMenu") slideMenus.push(allElems[i]) } for(var i=0 ; i < slideMenus.length ; i++){ slideMenus[i].onclick = showSlide; Code: slideMenus[i].getElementsByTagName("ul")[0].style.left = "0px"; } document.getElementById("head").onClick = closeSlide document.getElementById("main").onClick = closeSlide } function showSlide(){ var slideList = this.getElementsByTagName("ul")[0] // mess with this if((currentSlide != null) && (currentSlide.id == slideList.id)) {closeSlide()} else{ closeSlide(); var currentSlide = slideList; currentSlide.style.display = "block"; timeID = setInterval('moveSlide()', 1); } } function closeSlide(){ if(currentSlide){ clearInterval(timeID); currentSlide.style.left = "0px" currentSlide.style.display = "none"; var currentSlide = null } } function moveSlide(){ var leftPos = leftPos + 5; if(leftPos <= 220) {currentSlide.style.left = leftPos + "px"} else{ clearInterval(timeID); var leftPos = 0} } I'm getting a runtime error on the code in red. Can anyone see anything that is wrong with it? These functions are called by an onBlur by the way. <script type="text/javascript"> //THIS GENERATES QUANTITY OF MATERIALS function generate3() { var tot3 = document.ComplianceForm.materialamount.value; var tbl3 = document.getElementById("quantitymaterials"); if (tot3 > 28) { alert("16 is total amount of materials for now."); } else { for(var i =1; i<=tot3; i++) { tbl3.innerHTML = tbl3.innerHTML + '<tr><td colspan=\"2\"><hr /></td></tr><tr><td>'+i+') Quantity: <input type=\"text\" name=\"qty'+i+'\" size=\"3\"\/></td><td>Description: <input type=\"text\" name=\"material'+i+'\" /></td></tr><tr><td colspan=\'2\' \">Your Truck<input type=\"checkbox\" \/> Other truck<input type=\"checkbox\" \/> Cash<input type=\"checkbox\" \/> Credit Card<input type=\"checkbox\" \/> P.O.<input type=\"checkbox\" \/></td></tr>'; } tbl3.innerHTML = tbl3.innerHTML + '<br>'; } } function remove3() { var tot3 = document.ComplianceForm.materialamount.value; var tbl3 = document.getElementById("quantitymaterials"); for(var i =1;i<=tot3; i++) { tbl3.innerHTML = ""; document.ComplianceForm.materialamount.value = ""; tbl3.innerHTML = ""; } } </script> I'm pretty new to Javascript so don't lay into me too hard. haha thanks. -Ty Hello, I am new to Javascript. I copied this script from the web, but I get an error at this line: parent.removeChild(child); The error says "Invalid argument". Any suggestions are greatly appreciated. Code: <div id="parent" align=center> <form name=mainfrm method=post> <script language="JavaScript"> function doDelete(str1,str2) { var parent = document.getElementById(str1); var child = document.getElementById(str2); parent.removeChild(child); alert ("box removed"); } </script> <br><br> <table> <td class=stdbut1 onmouseover="this.className='stdbut1on'" onClick="doDelete('parent','child');" onmouseout="this.className='stdbut1'">Delete Box</td> </table> <br><br> <div id="child" class=titlebox1>Box</div> </form> </div> Code: <html> <title> random!!</title> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.min.js"></script> </head> <body> <div class="one" style="cursor: pointer;"> type1<br/><br/></div><div class="two" style="cursor: pointer;">type2<br/><br/></div><div class="three" style="cursor: pointer;">type3<br/><br/></div> <div class="oneone">atrdjgkhgfyfygfykfyfkygfvkgvkhgv</div><div class="twotwo">hgfihygohgohsgoihgolhgshgoshdgchchj</div><div class="threethree">siucgdiuhsbcohbscjbsidjcksjdnck</div> <script type="text/javascript"> $(document).ready(function() { $('div.twotwo').hide(); $('div.threethree').hide(); $('div.one').toggle(function() { $('div.twotwo').hide(); $('div.threethree').hide(); $('div.oneone').fadeIn('slow'); }, function() { return false; }); $('div.two').toggle(function() { $('div.oneone').hide(); $('div.threethree').hide(); $('div.twotwo').fadeIn('slow'); }, function() { return false; }); $('div.three').toggle(function() { $('div.twotwo').hide(); $('div.oneone').hide(); $('div.threethree').fadeIn('slow'); }, function() { return false; }); }); </script> </body> </html> The following code works perfectly when clicked once in each of the sub divisions(type1, type2, type3) for hide/show. But from the next time onwards we will have to click twice to initiate the hide/show. Can anyone suggest changes to make the code work as desired??.. P.S: sorry if i have made any stupid mistake.. i am quite new to this!! Either I made an uh-oh, or there is a serious problem with Javscripts math functions. Math.sin(x) returns the sine of x in radians. Last time I checked, the sine of pi radians is 0, but in javascript: Code: Math.sin(Math.PI) // returns 1.2246467991473532e-16 Any idea why? Julian hey. im working on a facebook app.. this is what i got so far. PHP Code: <script language="JavaScript"> <!-- var theImages = new Array() theImages[0] = "http://img688.imageshack.us/img688/4787/logo1tq.jpg" theImages[1] = "http://img641.imageshack.us/img641/8292/logo2yex.jpg" theImages[2] = "http://img864.imageshack.us/img864/4097/logo3ik.jpg" theImages[3] = "http://img543.imageshack.us/img543/9046/logo4pu.jpg" theImages[4] = "http://img21.imageshack.us/img21/2567/logo5q.jpg" theImages[5] = "http://img842.imageshack.us/img842/696/logo6o.jpg" theImages[6] = "http://img85.imageshack.us/img85/7831/logo7k.jpg" var j = 0 var p = theImages.length; var preBuffer = new Array() for (i = 0; i < p; i++){ preBuffer[i] = new Image() preBuffer[i].src = theImages[i] } var whichImage = Math.round(Math.random()*(p-1)); function showImage(){ document.write('<img src="'+theImages[whichImage]+'">'); } //--> </script> <script language="JavaScript"> <!-- showImage(); //--> </script> now i want that the app posts the random image automaticlly to the useres timeline.. for example: if the random image is theImages [3] then it should post the image theimage [3] to the users timeline.. i see alot of facebook apps doing this.. thanks in advance How can you add/substract two numbers in javascript if they are written out as words such as one|two|three|four|five|six|seven|eight|nine|ten. Code: if ((word[0].match(/one|two|three|4|five|six|seven|eight|nine|ten/)) && (word[1].match(/plus|add/)) && (word[2].match(/one|two|three|4|five|six|seven|eight|nine|ten/))) { document.result.result.value = "The answer is ?"; return true;} Just started to learn java & came up with the following, but can't get the math.round to work. Anyone able to tell me where I'm going wrong please ??? <p> <script type="text/javascript">// <![CDATA[ var metrics = { "mm" : 1, "cm" : 10, "m" : 1000, "inch" : 25.4, "foot" : 304.8 }; function roundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); document.roundform.numberfield.value = parseFloat(newnumber); // Output the result to the form field (change for your purposes) } function roundme(len, wid, sq){ math.round.len; wid = math.round(wid); sq = math.round(sq); alert(len); }; function roundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); document.roundform.numberfield.value = parseFloat(newnumber); // Output the result to the form field (change for your purposes) }; function changeme(id, action) { var val = document.getElementById("sizegroup"); if (val.style.display == 'none') { val.style.display = 'block' } else { val.style.display = 'none' } }; function convert(num, dec){ var val = document.getElementById("boxa").value; var val2 = document.getElementById("boxb").value; if(isNaN(val)){return val}; if(isNaN(val2)){return val2}; document.getElementById("boxc").value = val * metrics[document.getElementById("choice1").value]/ metrics[document.getElementById("choice3").value]; metrics[document.getElementById("choice1").value]/ metrics[document.getElementById("choice3").value]; document.getElementById("boxd").value = val2 * metrics[document.getElementById("choice2").value]/ metrics[document.getElementById("choice4").value]; document.getElementById("sqmtrs").value = document.getElementById("boxc").value * document.getElementById("boxd").value ; document.getElementById("boxc").value = math.round(document.getElementById("boxc").value); }; var interval = null; function watchChanges(){ interval == null ? setInterval("convert()", 500) : clearInterval(interval); } // ]]></script> </p> <p>Length in imperial-metric / Width in imperial-metric</p> <div><input id="boxa" style="width: 40px;" onfocus="watchChanges()" onblur="watchChanges()" type="text" /><select id="choice1" onchange="convert();"> <option value="mm">millimeters</option> <option value="cm">centimeters</option> <option value="m">metres</option> <option selected="selected" value="foot">feet</option> <option value="inch">inches</option> </select> <input id="boxb" style="width: 40px;" onfocus="watchChanges()" onblur="watchChanges()" type="text" /><select id="choice2" onchange="convert()"> <option value="mm">millimeters</option> <option value="cm">centimeters</option> <option value="m">metres</option> <option selected="selected" value="foot">feet</option> <option value="inch">inches</option> </select></div> <div><input id="boxc" style="width: 40px;" type="text" disabled="disabled" /><select id="choice3" onchange="convert()"> <option value="mm">millimeters</option> <option value="cm">centimeters</option> <option selected="selected" value="m">metres</option> <option value="foot">feet</option> <option value="inch">inches</option> </select> <input id="boxd" style="width: 40px;" type="text" disabled="disabled" /><select id="choice4" onchange="convert()"> <option value="mm">millimeters</option> <option value="cm">centimeters</option> <option selected="selected" value="m">metres</option> <option value="foot">feet</option> <option value="inch">inches</option> </select></div> <p> </p> <div>Total sq metres : <input id="sqmtrs" style="width: 40px;" type="text" value="" disabled="disabled" /></div> <p> </p> <div class="label">Please round up to half a metre when choosing</div> <table border="0" cellspacing="0" cellpadding="5"> <tbody> <tr> <td>Round:</td> <td><input type="text" name="numberfield" value="" /> to <input type="text" name="decimalfield" value="2" size="3" /> decimal places</td> </tr> <tr> <td>Result:</td> <td><input type="text" name="roundedfield" value="" /> <input onclick="roundNumber(numberfield.value, decimalfield.value);" type="button" value="Calculate" /></td> </tr> </tbody> </table> I'm new to programming and can't figure out why this won't work: Code: print " var 1A == Math.sqrt(Math.pow(B,2) - Math.pow(C,2)); \n"; print " var 1B == Math.sqrt(Math.pow(A,2) + Math.pow((F + G),2)); \n"; print " var 1C == B + D; \n"; print " var 1D == C - B; \n"; print " var 1E == E; \n"; print " var 1F == (Math.sqrt(Math.pow(C,2) - Math.pow(A,2)) - G); \n"; print " var 1G == (Math.sqrt(Math.pow(C,2) + Math.pow(A,2)) - F); \n"; print " var 1H == ((F + G) / B); \n"; I have tried debugging it using Firebug and I get this error: Quote: identifier starts immediately after numeric literal I get the error on the line with var 1A, but I'm pretty sure that 1B, 1F, and 1G would all have the same error. Thanks for the help in advance guys! BTW the reason why the code is being printed is because I'm programming with Perl and running on a webpage using html and javascript. I'm making a 3d pie chart. I have the points and the correct method to fill everything but when the slice rotates I want to make the outer edge filled, but in order to do that I have to figure out what math I use to find the leading edge. I made a picture to hopefully explin what I need to find. I figure it might be the tangent but I was hoping someone smarter than I could send me in the right direction. I just need someone to help me pinpoint my next step. Right now the rendering uses start and end angles to first make the top and bottom sections, fills them and then it makes an arc along the top of the slice from start to end then from end to start on the bottom slice and completes the polygon by going back the first point in the arc. I need to make two separate polygons if the end or start are further from the center than the( tangent?) point. Need some advice. Hope someone has an idea. I can't wrap my head around this at the moment so with the hope of finding someone willing to take a stab I am posting this to all of you. I need to create a savings ticker that shows $ saved per second. The data is as follows then = date script is created now = current date std = savings to date in $ avg = average savings per second in $ It would need to calculate the difference in time between then and now, convert that to an integer that can then be multiplied by avg then std would be added. thanks in advance Code: <script type="text/javascript"> function countItDown(){ var current=parseFloat(document.getElementById("currentsecondscount").value); var seconds=current; document.getElementById("debug").innerHTML="S "+current; var minutes=Math.floor(seconds/60); document.getElementById("debug").innerHTML+="<br>M "+minutes; var hours=Math.floor(minutes/60); document.getElementById("debug").innerHTML+="<br>H "+hours; var days=Math.floor(hours/24); document.getElementById("debug").innerHTML+="<br>D "+days; var remainingseconds=seconds-(minutes*60); document.getElementById("debug").innerHTML+="<br>RS "+remainingseconds; var remainingminutes=minutes-(hours*60); document.getElementById("debug").innerHTML+="<br>RM "+remainingminutes; var remaininghours=hours-(days*24); document.getElementById("debug").innerHTML+="<br>RH "+remaininghours; if(days<10){ days="0"+days; } if(remaininghours<10){ remaininghours="0"+remaininghours;} if(remainingminutes<10){ remainingminutes="0"+remainingminutes;} if(remainingseconds<10){ remainingseconds="0"+remainingseconds;} document.getElementById("days").innerHTML=days; document.getElementById("hours").innerHTML=remaininghours; document.getElementById("minutes").innerHTML=remainingminutes; document.getElementById("seconds").innerHTML=remainingseconds; document.getElementById("currentsecondscount").value=(current-1); } </script> ....... <input type="hidden" id="currentsecondscount" value="<?=$seconds;?>" /> ....... Chrome/IE/etc on Left... FF 3.6.3 [windows] on Right im not sure why Firefox is doing this. it seems to work fine on Firefox 3.6.3 for Mac... Hi. I'm in JS kindergarten. I have a form with a field that asks for a full year. If the year is greater than 20 years ago, I'd like additional form fields to be revealed. If the year is equal to or less than 20 years ago, it will not reveal the fields. (And it should be based on getFullYear(), so I don't have to update the script every year, yeah?) I figured out how to script onclick functions and some basic .value == functions in order to show/hide just about every type of form field. So I don't need that info. But I'm unsure of how to calculate the value. I'd be interested to see your solutions. No rush. Thanks in advance. Im trying to get all of these math functions into one table with each one going into an individual row. The following is what my Grad Assistant gave us as instructions..he is not real helpful..lol The goal of project to is to create a webpage that makes use of javascript to perform a dynamic number of operations. The program must first ask for a number of operations to perform (n).It is therefore required that a loop construct be used. The program will then ask the user n times what operation they would like to perform and the appropriate inputs for that operation. All of the operations will use integer type inputs except ceiling, floor, and round which will use float types. The required operations for this project will be 1. + 2. * 3. / 4. % 5. min 6. max 7. floor 8. ceil 9. round The output of each operation will be stored in a table. The required outputs for each row are the operation requested, the expression for the operation showing its structure (see below), the result of the operation and additionally a random number. The random number should be within one and the number of operations requested. (ex: 5 operations requested, random number is in the range 0-5) A sample of what this output will look like is shown here. let me know if you can help it is much appreciated..the course book does not cover most of what is being taught and in class time could be better spent self taught! lol ..midterms suck and its almost time for the weekend so I could really use some help!! thx again |