JavaScript - Logic Error
How can we identify logical errors from other types of errors?
Similar TutorialsIn my previous post, I asked how to create a function that would allow me to add to or subtract from a maxvalue, and thankfully I got help regarding that. However, something's got me stumped for the past few weeks that I still can't resolve... This is the relevant code: Code: <html> <head> <script type="text/javascript" language="Javascript"> function chgAdv(btn) { var form = btn.form; var newqty = parseInt(btn.value); var maxqty = form.maxqty; var maxadv = form.maxadv; if (eval("btn.checked") == true && parseInt(maxadv.value) + newqty <= 15) { var newmax = parseInt(maxqty.value) - newqty; var newadv = parseInt(maxadv.value) + newqty; } else if (eval("btn.checked") == false && parseInt(maxadv.value) - newqty >= 0) { var newmax = parseInt(maxqty.value) + newqty; var newadv = parseInt(maxadv.value) - newqty; } else { var newmax = parseInt(maxqty.value); var newadv = parseInt(maxadv.value); } if ( newadv >= 0 && newmax >= 0) { maxqty.value = newmax; maxadv.value = newadv; } } function chgDis(btn) { var form = btn.form; var newqty = parseInt(btn.value); var maxqty = form.maxqty; var maxdis = form.maxdis; if (eval("btn.checked") == true && parseInt(maxdis.value) + newqty <= 10) { var newmax = parseInt(maxqty.value) + newqty; var newdis = parseInt(maxdis.value) + newqty; } else if (eval("btn.checked") == false && parseInt(maxdis.value) - newqty >= 0) { var newmax = parseInt(maxqty.value) - newqty; var newdis = parseInt(maxdis.value) - newqty; } else { var newmax = parseInt(maxqty.value); var newdis = parseInt(maxdis.value); } if (newdis >= 0 && newmax >= 0) { maxqty.value = newmax; maxdis.value = newdis; } } </script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <form name="f1"> <b>Advantages</b> (<input type="text" class="RO" name="maxadv" value="0" />)<br /> <input type="checkbox" class="RO" name="Absolute Direction" onclick="chgAdv(this);" value="2" />Absolute Direction<br /> <input type="checkbox" class="RO" name="Allies" onclick="chgAdv(this);" value="3" />Allies<br /> <hr> <b>Disadvantages</b> (<input type="text" class="RO" name="maxdis" value="0" />)<br /> <input type="checkbox" class="RO" name="Antisocial" onclick="chgDis(this);" value="2" />Antisocial<br /> <input type="checkbox" class="RO" name="Ascetic" onclick="chgDis(this);" value="4" />Ascetic<br /> max quantity: <input type="text" readonly class="RO" name="maxqty" value="40" /> </form> </body> </html> styles.css is simply: Code: input.RO { border: none; width: 40px; text-align: center; } As it stands, it works as long as the total value is less than or equal to the limit (for advantages it's 15, for disadvantages it's 10). However, the moment it goes past the limit -- for instance, if you change Antisocial's value from 2 to 7, or if you add several additional checkboxes with any values -- the whole thing starts going crazy; specifically, maxvalue doesn't revert to 40 when the all the checkboxes are unchecked. What I'd want to happen is that the user cannot select or apply advantages or disadvantages if the maximum advantage is greater than 15 or the maximum disadvantages is greater than 10. I'm thinking that a button for adding disadvantage points to/subtracting advantage points from the maxvalue (that becomes disabled if the user goes past his limit on advantages/disadvantages) is useful at this point, but I'm really stumped on the implementation of the idea. An alternate idea of mine is that all other advantage/disadvantage checkboxes would become disabled if their value is greater than the remaining number of points, but I don't know how that is possible either. Any and all help is greatly appreciated. Putting some javascript into a pdf file and can't get this to work out right. Basic setup: Field X = checkbox; Field Y = numeric input field; Here's what should happen (increment is toggled): Y has a value. When X is checked, Y is increased by 5. When X is unchecked, Y goes back to its original, unmodified value. Here's what really happens (increment is subtracted): Y has a value. When X is checked, Y is reduced by 5. When X is unchecked, Y is reduced by 5 again. Anytime X is clicked on, Y is reduced by 5 yet again. Here's the code: Code: function check_box(X, Y){ if(X.checked == true){ Y.value += 5; } else { Y.value -= 5; } Any help or advice is greatly appreciated. I was going through LinkedIn today, when I noticed something that I couldn't figure out, logic-wise. When you search using their search feature at top left, results come up live... no big deal, easy enough, keyup, no biggie. When you click outside the input box, it disappears, which is blur. However, if you click out of the input onto the search results, it remains, and stays up until you click somewhere outside of the input box or the search results. This I have no idea how is done. Is there a way to know what element a user clicks on? Anyone have thoughts/guidance for this? I'm using jQuery as a framework if that helps? im trying to add the following numbers: 0+1+2+3+4. The actual answer being 10 obviously. i dont realy get why its coming out as 5 and not 10. Code: var sum = 0; for (i = 0; i < 5; i++); { sum = sum + i; } document.write("Sum is: " + sum); Hello everyone. I need some guidance on what might be the best way to tackle this problem. I am creating a page for work. It is a local html site that will be used to show different "questions" in the form of a number of different <div>'s. Currently, the page is set up to have two initial questions that are always visible. The first question asks the user to select from 9 checkboxes and the second asks to choose between 7 radio buttons. Choosing both calls on an onclick javascript event called setup page. This is where I need the help. There are currently 25 hidden <div>'s on the page. The premise is that, depending on your answers to the first two questions, some of those 25 divs become visible for the user to answer those questions only. Currently, when that setup page onclick event is called, the setup page function goes through each of the 25 questions and says Code: pseudocode: if q1_a.checked || q1_b.checked && q2_a.checked, show question 3 div if q1_c.checked && q2_b.checked, show question 4 div etc... I'm thinking there's got to be a better way. This page is becoming unruly and hard to troubleshoot with so much javascript/variables. I was thinking about using case statements but with so many variable options between those two first questions I think there would be too many cases. Any suggestions on another way I can go about this? Thanks!! was wondering if it made sense to optimize the comparison order inside an if() statement if one of the comparison targets is a function call eg: Code: var a = true, b = function() {return false;}; if (b() || a) {...} if (a || b()) {...} would the second statement run faster because it would theoretically never need to call b() in this situation? can the eval order be relied on? does this depend on the js engine/internal optimizations? thanks, Leon Hello all, As this is an active javascript programming forum...i'm really hoping i'll get a solution for my problem...please help me out.... I have a html: text inside a logic:iterate block like this.. <logic:iterate name="AllocationsForm" property="newSearchAllocations" id="allocations" indexId="myindex" > <html:text name="allocations" property="newStartDate" indexed="true" onblur="allocationTest(this, " + myindex + ");" /> </logic:iterate> i want to write a onblur event for this text field inorder to validate it. Is it the correct way i wrote or something i need to make a change in the above code inorder for the javascript to work. Can we really able to write a onblur event for a indexed text field that is inside a logic:iterate block. please let me know. Thanks in advance. Hey there. I'm creating my web-site now. I'm planing to have some slide/object change by itself. I know Java Script perform this task. I have get the code and apply to the image I want. It works. My idea is each of my image upper left corner have the representative number of the slide. When the slide1 go to slide 2 automatically, the number will change colour from 1 to 2. When the user click the number, the slide will change according to the number. Let said I have 3 slide. Each slide and have no 1 ,2 ,3 move forward, move backward icon on the upper left corner. I have slide1 ,slide2, slide3 change by itself within 2.5 second. When the user go thru slide 1, slide 2 and till slide3, user find out he/she interested on slide 1 and by clicking 1 on the upper left corner, the slide will change back to slide 1. Something like showing on the home page at www.easyjet.com.EN or http://www.thomascook.com/ . Both home page show a slide. This is what exactly I want. I learn HTML code before but not Java Script. I have borrow many Java Script reference book. but no idea how to inside the number on the upper left corner on each slide and how the number work accordingly with the slide. So sorry if you can't understand what I was talking about. But, anyone who understand me or have any idea how can I mortify the Java script to what I want. Just answer or email me to trista_soo@yahoo.com or facebook me on sym107@hotmail.com. Thanks for your time and efforts. Your help I really appreciate. Cheers! Hi, I am using a wordpress jquery based plugin. TheThe Sliding panels. You can see the jquery he - http://www.get-me-heard.com/wp-conte...jquery.ttsp.js The panel currently auto-opens when the page loads. Which is what I want, however I would like it so that once a user has clicked to close the panel, for it to stay closed even when navigating pages, until they decide to click open again. I would also need the cookie flushed when they leave the website so that the next time they return the panels auto open again. Essentially I just dont want the users to have to click close every time they navigate throughout the website if they don't want to see the panels. NOTE: The plugin has several panels which you can choose from. I am only using the left panel and the right panel. They are all controlled within the jquery. Thanks! I don't understand the logic of Break, Return False, Return True. It was never really covered in our college class, and I see everyone using it. I got an A in the class, if that 'proves' that I really tried to apply myself. NOTE: I understand what the function is doing. I just don't understand WHEN to use break, return false or return true if the the translator can determine the conditional statements. PHP Code: function submitForm(){ var ageSelected = false; for (var i=0; i<5; ++1){ if (document.forms[0].ageGroup[i].checked == true) { ageSelected = true; break; } } if (ageSelected == false){ window.alert("You must select your age group"); return false; } else return false; } if the the translator can determine the conditional statements, why not write it like this: PHP Code: function submitForm(){ var ageSelected = false; for (var i=0; i<5; ++1){ if (document.forms[0].ageGroup[i].checked == true) { ageSelected = true; break; // what's the point for the 'break'? Won't the rest of the code be ignored since it passed the first condition? } } if (ageSelected == false){ window.alert("You must select your age group"); return false; } // why not leave the last else out? is it just a 'safety' catch, in case something other than true or false is inputted? else return false; // what's the point? } Questions: Why use return true, if the translator knows it's ture? Why use "return false" if the translator knows it's false and the alert window has already gone up? why not use "break" to stop the code? Why use the "return false" at the end "else" statement? (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} } Strange problem here... I'm implementing google's JS tracking code verbatim which determines whether or not the current site is using HTTP or HTTPS. It builds a dynamic URL used as the "SRC" parameter in the SCRIPT statement. On browsers I'm testing with(FF, IE, Chrome) there's no problem running the code. However, there are some people in the office who get an FF or IE error (same versions as mine) on the URL as the SRC parameter. The error, in the FF Error Console, is this: Quote: illegal character http://www.google-analytics.com/ga.js ? ? ? ? --> question marks appear in console I can't figure it out since I can't create this error on any of my browsers. Could this be related to something like browser security settings or add-ons? Why is there a syntax error in this and how do i fix? Code: $(document).ready(function() { $("#gogo").click(function() { $("#replace").html(" <tr> <td width='800' height='186' align='left' valign='top' class='end'> <h1><a href='register.php'><br /> </a></h1> <h1>About Chef Match</h1> <p class='txt' id='more'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</p> <p class='txt'> </p> <p class='txt'>Chef Match is a revolutionary site which creates the link between staff and temporary work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p><span class='txt'>Chef Match is a revolutionary site which creates the link between staff and tempory work. Remember this site is not only aimed at chefs, but at anyone who works in a catering environment, waiters, bar staff and even kitchen porters.</span></p> <p> </p></td> </tr> "); }); }); am working on a certain project , and there is a part were i have to upload a photo; when i run that part of the code am getting the following error message "The value for the useBean class attribute javazoom.upload.UploadBean is invalid" here is the part of the code <%@ page language="java" import="javazoom.upload.UploadBean*,java.util.*,java.io.*" %> <%@ page language="java" import="javazoom.upload.UploadBean*,java.util.*,java.io.*" %> <%@ page errorPage="ExceptionHandler.jsp" %> <jsp:useBean id="upBean" scope="page" class="javazoom.upload.UploadBean" > <jsp:setProperty name="upBean" property="folderstore" value="<%= directory %>" /> <jsp:setProperty name="upBean" property="parser" value="<%= MultipartFormDataRequest.CFUPARSER %>"/> <jsp:setProperty name="upBean" property="parsertmpdir" value="<%= tmpdirectory %>"/> <jsp:setProperty name="upBean" property="filesizelimit" value="8589934592"/> <jsp:setProperty name="upBean" property="overwrite" value="<%= allowoverwrite %>"/> <jsp:setProperty name="upBean" property="dump" value="true"/> </jsp:useBean> PLEASE HELP!!!!! Hi guys! My first post here! I was encountering a rather confusing error using the webinterface of the DVBViewer Recording Service. Unfortunately the author of this software passed away more than a year ago, so nobody at the forum have the skills to solve this bug. The webinterface has a timeline view of a TV EPG. There are two buttons that navigates back and forth in EPG time. The upcoming DST change on sunday 26th October has revealed a bug. There is no way to navigate passed sunday with the button. Pressing repatedly on the button trying to get mondays EPG. sundays EPG reloads after each button press. Its stuck so to say. I therefor wonder if anyone in here would feel like helping out? The current Recording Service developer pinpointed the error here in the timeline.js: Code: Line 42: var ONE_DAY = 24*60*60*1000; Line 686: /** * increments or decrements the date in the datepicker by the given amount */ function moveDate(offset) { var currDate = datefield.datepicker("getDate"); currDate.setTime(currDate.getTime() + offset * ONE_DAY); var now = new Date().getTime(); if (currDate.getTime() + 2*ONE_DAY < now || currDate.getTime() - 31*ONE_DAY > now) { return; } datefield.datepicker("setDate", currDate); guiactionform.submit(); } Line 1298: $('#nextday').click(function() { moveDate(+1); }); Unfortunately the timeline.js is too large to post in code box so i try to append it as a file: timeline.zip Best regards majstang SOLUTION: I accidentally used <\ul> instead of </ul> ... IE actually threw a proper error, since \u escapes a unicode string (in hex) --- I have the following section of javascript: Code: jQuery.each($('.prodContent'), function(i, val) { if(!($(this).is(":has(ul.tabs)"))) { jQuery.each($(this).children('.panes:has(.tabdiv)'), function(i, val) { var theList = "<ul class='tabs'>\n"; jQuery.each($(this).children('.tabdiv'), function(i, val) { var theName = $(this).children('.noshow:first').text(); theList += " <li><a href='#'>"+theName+"</a></li>\n"; }); theList += "<\ul>\n"; $(this).before(theList); }); } In firefox and chrome, it takes a series of divs, containing headers, and adds a list of those headers before the series... so this: Code: <div> <h2>header1</h2> content </div> <div> <h2>header2</h2> content </div> becomes: Code: <ul> <li><a href="#">header1</a></li> <li><a href="#">header2</a></li> <div> <h2>header1</h2> content </div> <div> <h2>header2</h2> content </div> however, in IE, the error console claims an error on line 7, at the +=, saying that it expected a hexidecimal value... any ideas? p.s. you can see the issue live here http://bit.ly/oYrNAa (sorry bout the url shortener, but i don't want this topic to show up in a search for the site) Hello I am getting an error message on a page that uses Javascript. The error is as follows: Code: Message: 'Class' is undefined Line: 1 Char: 1 Code: 0 URI: http://stevehigham59.7host.com/final...//imageMenu.js The first line in the JS file is: var ImageMenu = new Class({ How could I resolve this error, please? Thanks. Steve So i keep getting this nan error. I googled the crap out of it but can't find anything that works. This part here works fine: Code: function calBolt() { boltQTY = document.getElementById("boltQTY").value; boltCost=boltQTY * 2.1; boltCost=boltCost.toFixed(2); if (boltCost == 0) { document.getElementById("test").lastChild.nodeValue = "$0.00"; } else { document.getElementById("test").lastChild.nodeValue = "$"+boltCost; } } But when i try to use those variables in this function i keep getting an NAN error. Code: function total(boltCost,nutCost,washCost) { var total= 0; total = parseFloat(boltCost)+parseFloat(nutCost)+parseFloat(washCost); document.getElementById("content").lastChild.nodeValue= total; } At the moment i'm trying to use parsefloat to convert it. No luck. I'm thinking it's something really basic and obvious...i do that a lot. Hello, can anyone tell me why I am getting a NaN error with this code? It works on the computer but when accessing from the Net I am getting NaN errors for total1 and total3? Thank you! showAnswers1() { var score1 = 5; var total1 = 0; for (var i=0;i<2;i++){ if (eval("document.s1.q" + i + "[0].checked") == true) total1 = total1 + score1 + 5; } for (var i=2;i<18;i++) { if (eval("document.s1.q" + i + "[0].checked") == true) total1 = total1 + score1; } document.cookie = total1; document.s1.yes1.value = total1; } function showAnswers2() { var total1 = document.cookie; var score2 = 5; var total2 = 0; var total3 = 0; for (var i=18;i<20;i++){ if (eval("document.s2.q" + i + "[0].checked") == true) total2 = total2 + score2 + 5; } for (var i=20;i<36;i++) { if (eval("document.s2.q" + i + "[0].checked") == true) total2 = total2 + score2; } total1 = total1 -0; total2 = total2 -0; total3 = total1 + total2; document.cookie = total3; document.s2.yes1.value = total1; document.s2.yes2.value = total2; document.s2.yes3.value = total3; } //--></SCRIPT> |