javascript,arrays,alert , Javascript program keeps outputting wrong index of array


Javascript program keeps outputting wrong index of array

Question:

Tag: javascript,arrays,alert

I'm trying to finish an assignment, I'm stuck at and can't find a solution. Below is my full code.

//Student Object
        var student = {
          f_name: "",
          l_name: "",
          s_numb: "",
          email: "",
          courses: [],
          /*This function returns if current object has a specific course 
          and returns true if it does and false if not.*/
          hasCourse: function (course) {
            for (var c = 0; c < this.courses.length; c++) {
              if (course == this.courses[c]) {
                return true;
              }
            }
            return false;
          }
        };
        
        
        /*This function returns name with first letter 
        capitalized and the rest lowercase.*/
        function formatingName(name) {
          return name.charAt(0).toUpperCase() + name.substr(1, name.length);
        }
        
        /*This function validates to match the Student ID pattern and 
        returns true it matches and false if not.*/
        function validateStudentID(sid) {
          var patt = /^([0-9]{3}[.]){2}[0-9]{3}$/;
          return patt.test(sid);
        }
        
        /*This function receives a string array of course codes which 
        are to be registered for a student. The function returns an empty 
        string indicating all course codes in the array are valid; otherwise 
        the function returns the first invalid course code in the array.*/
        function validateCourses(courses) {
        
          var error = false;
        
          for (i = 0; i < courses.length; i++) {
            if (error == false) {
              if (courses[i] != "APC100" && courses[i] != "IPC144" && 
                courses[i] != "ULI101" && courses[i] != "IOS110" && 
                courses[i] != "EAC150" && courses[i] != "IBC233" && 
                courses[i] != "OOP244" && courses[i] != "DBS201" && 
                courses[i] != "INT222") {
                error = courses[i];
                break;
              }
            }
          }
          if (error != false) {return error;} else {return "";}
          return '';
        }
        
        
        var response = true; //Continues to prompt if error is true
        var error = false;   //Error flag
        var temp_obj = [];   //Temporary object that hold current object's values
        var temp_course = []; 
        var students = [];
        var x = 0;
        
        while (response == true) {
        
          do {
          
            var str = prompt("Please enter first name, last name, student ID,\nemail and courses (separated by ',')");
            
            if (str == "" || str === null) {
              response = false;
              break;
            }
        
            //Removing white spaces in the string
            str = str.split(' ').join('');
            //Splitting the string into array by , (coma) and assigning it to temporary object array
            temp_obj = str.split(',');
        
            //Validating Student ID
            if (validateStudentID(temp_obj[2]) == false) {
              alert(temp_obj[2] + " is not a valid student ID, Please use xxx.xxx.xxx format.\nPlease try again!");
              error = true;
            }
            //Validating if student is registered in atleast 1 course.
            if (temp_obj.length < 5) {
              alert("A student must be registered in at-least 1 course");
              error = true;
            }
            //Checking if student is registered in more than 6 courses
            if (temp_obj.length > 10) {
              temp_obj = temp_obj.slice(0,9);
            }
            //Extracting courses from temporary object array
            temp_course = temp_obj.slice(4, temp_obj.length);
        
            //Makking all the courses uppercase
            for (i = 0; i < temp_course.length; i++) {
              temp_course[i] = temp_course[i].toUpperCase();
            }
            //Validating if courses are valid
            if (validateCourses(temp_course) != "") {
              alert(validateCourses(temp_course) + " is not the course provided by CPD program!\nPlease try again.");
              error = true;
            }
        
          }
          while (error == true);
          //Break out of loop if user submitted nothing or if user pressed cancel
          if (response == false) {break;}
        
            //Merging cources array back with temporary object array
            temp_obj = temp_obj.concat(temp_course);
        
            //Creating a new instance of a student    
            students[x] = Object.create(student);
            
            //Assigning values to student object from temporary object;
            students[x].f_name = formatingName(temp_obj[0]); //Formatting name
            students[x].l_name = formatingName(temp_obj[1]);
            students[x].s_numb = temp_obj[2];
            students[x].email = temp_obj[3].toLowerCase(); //Making the email all lowercase
            
            //Making the course codes in Uppercase
            for (i = 0; i < (temp_obj.length) - 4; i++ ) {
              students[x].courses[i] = temp_obj[i + 4].toUpperCase();
            }
          
          x++;
        
        }
        
        //Printing total registered students
        alert("There are total " + students.length + " students registered.");
        
          var R_fname = [];
          var R_lname = [];
          var R_sid = [];
          var R_email = [];
        
        do {
          var no_error = false;
          var query = true;
          var query_course = [];
        
          while (no_error == false) {
            query = prompt("Please enter a course code:");
            if (query == "" || query == null) {
              query = false;
              break;
            }
        
            no_error = true;
        
            query_course[0] = query.toUpperCase();
        
            if (validateCourses(query_course) != "") {
              alert(query + " is not the course provided by CPD program!\nPlease try again");
              no_error = false;
            }
        
          }
        
          if (query == false) {break;}
        
        
          //THIS IS WHERE I THINK THE PROBLEM IS
          //THIS IS WHERE I THINK THE PROBLEM IS
          //THIS IS WHERE I THINK THE PROBLEM IS
          //THIS IS WHERE I THINK THE PROBLEM IS
        
          for (var a = 0; a < students.length; a++) {
        
            //Checking if student is registred in a course
            if (students[a].hasCourse(query_course) == true) {
              //Assigning values to temporary array.
              R_fname[a] = students[a].f_name;
              R_lname[a] = students[a].l_name;
              R_sid[a] = students[a].s_numb;
              R_email[a] = students[a].email;
         
            }
          }
        
          var fin_str = "";
        
          //Concatenating all the students in a specific course to fin_str as string.
          for (var b = 0; b < R_fname.length; b++) {
            fin_str += (R_fname[b] + " " + R_lname[b] + "    " + R_sid[b] + "    " + R_email[b] + " \n");
          }
        
          //Printing list of student in a specific course
          alert("List of students registered in " + query + "\n\n" + fin_str);
        
          //Retting temporary arrays
          R_fname.length = 0;
          R_lname.length = 0;
          R_sid.length = 0;
          R_email.length = 0;
        
          //Confirms to Exit the query loop
          if (confirm("Click 'OK' to continue to query class lists.\nClick 'Cancel' to stop the program.") == false) {break;}
        
        }
        while (query != false);

These are the test values:

roy,bean,056.171.486,[email protected],int222

carl,bell,121.126.536,[email protected],dbs201,int222

eric,brand,046.123.976,[email protected],oop244,dbs201,int222

henry, clay, 034.146.412, [email protected] , ibc233 , oop244 , dbs201 , int222

When the program asks to enter the course code; it is suppose to see if the students have that course and only if they do, it prints that students info.

In my case, even if student does not have the course it still prints it. Please run the code to see if it makes more sense... I can't explain any better


Answer:

The problem can be reduced to this:

var Foo = {
  courses: []
};

var x = Object.create(Foo);
var y = Object.create(Foo);
x.courses.push(123);
alert(y.courses[0]); // "123"

The reason for this behaviour is that both objects inherit the same prototype and any changes made to .courses will apply to both objects.

For this reason, it would be better to create a constructor function instead:

function Foo()
{
    this.courses = [];
}

var x = new Foo();

Related:


Teechart HTML5, line color and thickness


javascript,html5,teechart
How do you change the line color and thickness of a series in Teechart HTML5. I have been looking through the examples, but i can't find anything describing that....

Javascript function to validate contents of an array


javascript,arrays
Here's what is asked: validItems(items) – this function receives a string array of items which are to be for a customer. The function returns an empty string indicating all item codes in the array are valid; otherwise the function returns the first invalid item code in the array. All item...

Get elements containing text from array


javascript,jquery,html,arrays,contains
I want to search all the elements containing any string in the array. For example I have following list of items <ul> <li>cricket bat</li> <li>tennis ball</li> <li>golf ball</li> <li>hockey stick</li> </ul> and this array var arr = ['bat', 'ball']; It should select all the elements having text bat and ball....

Javscript Replace Text in tags without changing children element HTML and Content


javascript,jquery
I have a script where I'd like to replace the text anywhere in the body visible to the user like so: $("body").html($("body").html().replace(/replaced word/g,'HELLO')); This works but it works to well. Whenever "replaced word" is within a tag, like a href, or span, or div, or anything it throws off all...

How to use a service with Http request in Angular JS


javascript,angularjs
I'm using AngularJS to build my web application, I've been always using controllers to make HTTP request, which makes things easier and clear for me. But for a better code structure, and better execution for my application, I wanted to use services instead of controllers to use the web service....

Target next instance of an element/div


javascript,jquery,html
I have the following HTML structure and JavaScript file: .html <li> <button class="show-more"></button> some more elements <div class="hidden"></div> </li> JavaScript $( ".show-more" ).click(function() { event.preventDefault(); $( this ).next().slideToggle( "fast", function() { }); }); I need the click event to toggle the next first instance of .hidden, however the click event...

slideToggle state not working with multiple boxes


javascript,jquery,cookies
I'm trying to save the toggle state of collapsable boxes using cookies. Here's my code: HTML: <div class="box_container"> <div class="box_handle"> Title </div> <div class="box" data-title="admin_actions"> Content </div> </div> Javascript: $('div.box_container div.box_handle').click(function() { $(this).next('.box').slideToggle('fast'); }); $.each($('div.box_container div.box_handle'), function(index,value){ if ($.cookie('show_box_' + $(value).next('.box').attr('data-title')) != 'closed'){...

array and function php


php,arrays
I'm just a beginner in PHP coding. I've been reading through a tutorial, but having some trouble with basic PHP concepts. If you could help me, I'd be much obliged. I'm having trouble understanding why the following code doesn't work. <?php function sum($x, $y) { $z = $x + $y;...

want to show and hide text using “this” jquery


javascript,jquery
I want to achieve this effect with this because I have several paragraphs like this so I don't wanna use id for each paragraph <p class="desc_services_subheading"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,...

Not able to access variables in required file


javascript,gulp,require,browserify
I'm using browserify on a project and am running in to the following: I have a file test.js. In test.js there is nothing but the following: var test = 'test'; Now, in the same directory I have my main file 'app.js'. I require test.js and try to access the 'test'...

Background-image style with JS not working in ie9


javascript,jquery,html,internet-explorer
I'm working on a site and im having some issues with my slider in IE9. What I've done is that I've made a div that gets the background image changed every few seconds depending on the img tags within. You can see it in function here: http://diakondk.quine.pil.dk/ It works wonders...

Click on link next link should be display on same page


javascript,php,jquery,html,css3
I have a single page website and need to link the navigation to IDs in the page. I have three links: "About us", "Our Project", "contact". So if user clicks on "About ", the About section will be displayed, same with other links. Inside Our project there is Two buttons...

Converting “i+=n” for-loop to $.each


javascript,jquery
I have the below html structure: <div class="thumbnail"></div> <div class="thumbnail"></div> <div class="thumbnail"></div> <div class="thumbnail"></div> <div class="thumbnail"></div> <div class="thumbnail"></div> <div class="thumbnail"></div> <div class="thumbnail"></div> Now to group/wrap each 4 items in a separate div I did as below: var div=$('.thumbnail'); for(var i = 0; i < div.length; i+=4) { div.slice(i, i+4).wrapAll("<div...

why i don't get return value javascript


javascript,jquery,html,json,html5
When i debug my code i can see i have value but i don't get value to createCheckBoxPlatform FN function createCheckBoxPlatform(data) { var platform = ""; $.each(data, function (i, item) { platform += '<label><input type="checkbox" name="' + item.PlatformName + ' value="' + item.PlatformSK + '">' + item.PlatformName + '</label>' +...

JSLint error: “Expected a newline at EOF”, conflict with Beautify plugin


javascript,gruntjs,jslint,beautify
I have a problem while building the sources using Grunt, with JSLint task for error check: L177: Expected a newline at the end of the file. Warning: Formatting check failed. Use --force to continue. Aborted due to warnings. The problem is obvious, but I use also the Beautify plugin for...

Saving data using promises


javascript,parse.com,promise
On Parse.com I have the following function, and my question follows: function myFunction(array, value) { var logMessage; logMessage = "array: " + array.length.toString(); console.log(logMessage); if (!array.length) return; if (!value) value = Math.min(10, array.length); if (array[array.length - 1].get("advertisePointNumber") >= value) return; var classPromise; array[array.length - 1].set("advertisePointNumber", value); logMessage = "(BIS)array: "...

Dynamically resize side-by-side images with different dimensions to the same height


javascript,html,css,image
I have two images side-by-side within a block-level container with arbitrarily different dimensions (as in, they could be any two images) that I want to dynamically adjust the width of so that the overall height of the two images is the same. I don't think this can be done in...

KnockoutJS custom component loader not executing `loadViewModel`


javascript,knockout.js,requirejs,knockout-components
Context I have been fiddling around and trying to create my own (just another) SPA framework. In this framework I've been trying to create a custom component loader to be able to do some dependency injection 'n stuff on the viewModels I'm loading. Used KnockoutJS version: 3.3.0 Problem The loadViewModel...

Changing interval time to random?


javascript
Im looking for a way to change the way my javascript number counter is working. Now it just counts up every second but I want it to count at random times between 1 second and 15 seconds. function startCount(){ timer = setInterval (count, 1000); } function count(){ var el =...

Can't call fetch directly in Backbone model listenTo


javascript,backbone.js,coffeescript
I'm trying to have a model listen to a collection and fetch itself when the collection changes: class Team extends Backbone.Model urlRoot: '/team', initialize: function(attributes, options) { this.listenTo(members, 'change', this.fetch) The fetch does seem to trigger, but the url is all messed up, and to get it to work I...

Substring of a file


javascript,arrays,substring
I have a file that is structure like this : var file = "a|b|c|d, a|b|c|d, a|b|c|d, a|b|c|d, a|b|c|d"; Now I would extract all letters "c" and "d" of this file and put those letter in array, structure like this: var array = [ [a,b,1], [a,b,2], [a,b,3], [a,b,4], [a,b,5] ]; How...

session value in javascript cannot be set


javascript,function,session
I am quite new to javascript, I wonder why my session value in javascript wont be set to 1 even I tried. When call this function again, the value of the session will change again. My javascript code as below. <script type="text/javascript"> function Confirm() { alert(<%=Session["Once"]%> != 1); var value...

Google map infowindow position


javascript,google-maps,events,infowindow
Here is a sample google map with three polygons. I am setting the infowindow for each polygon as, for (var i in coordinates) { arr = []; for (var j=0; j < coordinates[i].length; j++) { arr.push( new google.maps.LatLng( parseFloat(coordinates[i][j][0]), parseFloat(coordinates[i][j][1]) )); bounds.extend(arr[arr.length-1]) } // Construct the polygon. polygons.push(new google.maps.Polygon({ paths:...

submitting form then showing loading image by javascript


javascript,html
I am submitting a form and loading loading gif in the same div by replacing html of form by html of loading image. I am first submitting the form then loading gif, because I have to replace the content of div(in which form exist) with loading image. Logs 1,2,3 are...

Error: [$injector:unpr] Unknown provider: RestangularProvider <- Restangular <- ctrlAG


javascript,angularjs,restangular
I have one app: app.js: angular.module('AngApp', [ 'angularGrid' ]); My own restangular service.js: var app = angular.module('AngApp'); app.factory('restService', ['Restangular', function (Restangular) { // make use of Restangular } ]); and controller.js: var app = angular.module('AngApp'); app.controller('ctrlAG', ['$scope', '$http', '$log', '$mdDialog', 'Restangular',function ($scope,$http, $log, $mdDialog, Restangular) { // make use of...

Automatically calling server side class without


javascript,html,ajax
I have an anchor which calls a server side class when clicked, but I want to modify it so that the class is called as soon as the page loads, without having to click an anchor. <a href="#" class="_repLikeMore" data-id="1234" data-type="pid" data-app="forums"> ...

Login Signup PopUp


javascript
When I Open Login and signUp Portal it open with the both tab contents and then when I click on Login tab it open login tab content and on click register tab it open register tab page. But again after refresh the page popup showing both tabs content together![enter image...

Please can someone help me understand the exec method for regular expressions?


javascript,regex
The best place I have found for the exec method is Eloquent Javascript Chapter 9: "Regular expressions also have an exec (execute) method that will return null if no match was found and return an object with information about the match otherwise. An object returned from exec has an index...

Translating a character array into a integer string in C++


c++,arrays,string
I was trying to achieve translating a character array into a integer string and corresponding character to their alphabetical order. For instance: A(a) = 0 , Z(z) = 25. string key_char = argv[1]; string key_num; for (int i = 0; i < key_char.length(); i++){ if (isalpha(key_char[i])){ if (islower(key_char[i])){ key_num[i] =...

Replacing elements in an HTML file with JSON objects


javascript,json,replace
I am writing some Javascript to: Read in and Parse a JSON file Read in an HTML file (created as a template file) Replace elements in the HTML file with elements from the JSON file. It is only replacing the first element obj.verb. Can someone please help me figure out...

Onclick add html content and remove it by clicking “delete” link


javascript,jquery
I have some issue, help me please to find where is the mistake. $(document).ready(function(){ $(function() { var scntDiv = $('#p_scents'); var i = $('#p_scents .row-wrap').size() + 1; $('body').on('click', '.add-item', function() { $('<div class="row-wrap cf"><div class="col-md-3 col-sm-3 col-xs-12"><input type="text" placeholder="Наименование" name="item_name' + i +'"></div><div class="col-md-2 col-sm-2 col-xs-12"><input type="text" placeholder="Количество" name="item_count' +...

Create array from another with specific indices


javascript,arrays
I have two arrays, one of data and one of indices: var data = [ 'h', 'e', 'l', 'l', 'o', ' ' ]; var indices = [ 4, 0, 5, 0, 1, 2, 2 ]; I would like to create a third array, using cells of data in order indicated...

How to find the days b/w two long date values


javascript,jquery,date
I have two long dates value. For Ex: 1433097000000 1434479400000 Here i have to find the days between these two by jquery For Ex: 15/06/2015 - 22/06/2015 If it is more than 5 days, I want to get from is 15/06/2016, to is 19/06/2015. It is based on long values...

Javascript: Forloop Difference between i++ and (i+1)


javascript,loops,for-loop
I was building a javascript for loop and I want to compare the value of an array to the next value in the array. If both values are not equal, I want to return true, otherwise I want to return false. In the code below I pass the string "aba",...

Javascript sort array of objects in reverse chronological order


javascript,arrays,sorting
I have an array of objects which holds a list of jobs and I would like to sort them in reverse chronological order as they would appear on a resume for example. I came up with the below solution which 'seems' to work but I was wondering if there is...

Javascript change the souce of all images present inside a string


javascript,jquery
I have a message or string which contain both text as well as images as below. var text = '<span class="user_message">hiiiiiii <img title=":benztip" src="path../files/stickers/1427956613.gif"> <img src="path../files/stickers/416397278.gif" title=":happy"></span>'; Before appending this to the the chat div i want to replace the src of the images to a default image. How can...

show div only when printing


javascript,html,css
Let's say that I have <div id="printOnly"> <b>Title</b> <p> Printing content </p> </div> Is it possible to hide this div when page rendering and to show only when printing this div?...

Parsing XML array using Jquery


javascript,jquery,xml,jquery-mobile
I have stuck up with an issue of passing XML using Jquery. I am getting empty array while traversing to jquery.Please help me how to get datas from XML array. I have mentioned my code below. XML <?xml version="1.0" encoding="UTF-8"?> <json> <json> <CustomerName>999GIZA MID INSURANCEAND SERVICES PVT LTD</CustomerName> <mobiLastReceiptDate>null</mobiLastReceiptDate> </json>...

How to get my node.js mocha test running?


javascript,node.js,mocha,supertest
I have developed a service in node.js and looking to create my first ever mocha test for this in a seperate file test.js, so I can run the test like this: mocha test I could not figure out how to get the reference to my app, routes.js: var _ =...

Ruby: How to copy the multidimensional array in new array?


ruby-on-rails,arrays,ruby,multidimensional-array
seating_arrangement [ [:first, :second, :none], [:first, :none, :second], [:second, :second, :first], ] I need to copy this array into new array. I tried to do it by following code: class Simulator @@current_state def initialize(seating_arrangement) @@current_state = seating_arrangement.dup end But whenever I am making any changes to seating_arrangement current_state changes automatically....

Cant submit form


javascript,php
Basically I've got a form with 5 radio buttons. No submit button. I want the form to run when the user clicks on any of the radio buttons, so this is what I did. <input id="5" type="radio" name="star" onchange="this.form.submit();" <?php if ($row["star"] =="5") echo "checked";?> value="5"/> a querystring is required...

Sockets make no sense?


javascript,node.js,sockets
I'm using the 'ws' library for Node.js. I can write code that sends data from my server to my client, posting a date and time update, and closes the socket when I click a button; var wss = new WebSocketServer({server: server}); console.log("WebSocket server created"); wss.on('connection', function(socket) { // SEND DATE...

Angular $http and Fusion Tables in IE9


javascript,angularjs,internet-explorer-9,google-fusion-tables
I am trying a simple get request to a google fusion table in my angular controller. $http.get(url) .success(function(data) { //Do stuff with data }) This works in firefox, chrome, safari and IE10+ however in IE9 (Which I am requried to support) the request fails to even send and the console...

How To Check Value Of String


javascript,css,string,numeric
<span id='amount'>0.00000000</span> <a class='button-withdraw' id='tombolco' href='#'>Checkout</a> <script> var amount = document.getElementById("amount").innerHTML; if (amount >= 0.001) { document.GetElementById("tombolco").style = "display:block"; } else { document.GetElementById("tombolco").style = "display:none"; } </script> Why my code doesn't work? What's wrong with it and how to solve it?...

Get all prices with $ from string into an array in Javascript


javascript,regex,currency
var string = 'Our Prices are $355.00 and $550, down form $999.00'; How can I get those 3 prices into an array?...