www.webdeveloper.com
Results 1 to 2 of 2

Thread: How can I to create a table and create 2 columns for each row on the fly.

Hybrid View

  1. #1
    Join Date
    Feb 2009
    Posts
    95

    How can I to create a table and create 2 columns for each row on the fly.

    How can I to create a table and create 2 columns for each row and each column will hold a checkbox from the variable Time on the fly and assign the table to an object property.

    var Time will have string in the form of following examples:
    08:00 AM - 09:00 AM;09:00 AM - 10:00 AM;10:00 AM - 11:00 AM
    09:30 AM - 10:30 AM;11:30 AM - 12:30 PM

    If there is Semicolon in the variable Time string then it should break the string into pieces and then create a checkbox for each piece.

    For example in the case of "08:00 AM - 09:00 AM;09:00 AM - 10:00 AM;10:00 AM - 11:00 AM" then it should create a table with 2 rows and 2 columns and first row will have “08:00 AM - 09:00 AM” in the first column and “09:00 AM - 10:00 AM” in the second column and second row will have “10:00 AM - 11:00 AM" in the first column and noting in the second column.

    In other words BookArray[i-1][2] will hold a different table with rows and each rows will have 2 columns and each column will have a checkbox for each record.

    Code:
    for(var i = 0; i < gAssessorsArray.length; i++) 
    { 							
    	var Time = gAssessorsArray[i].Time; 
    	
    	BookArray[i-1] = new Array();
    	BookArray[i-1][0] = gAssessorsArray[i].ID;  	
    	BookArray[i-1][1] = '<input type="checkbox" id="bk_' + gAssessorsArray[i].ID + '" value="' + gAssessorsArray[i].Name + '" onchange="BookAppointment(this)" />';			
    	BookArray[i-1][2] = Time;														
    }

  2. #2
    Join Date
    Dec 2005
    Location
    FL
    Posts
    7,356

    Lightbulb

    Just a quick and dirty solution for you to expand upon...
    Code:
    <!DOCTYPE HTML>
    <html>
    <head>
    <title> Untitled </title>
    <meta charset="utf-8">
    
    </head>
    <body>
    <h3> Raw data (from somewhere) </h3>
    <textarea id="TArea" rows="8" cols="80">
    08:00 AM - 09:00 AM;09:00 AM - 10:00 AM;10:00 AM - 11:00 AM
    09:30 AM - 10:30 AM;11:30 AM - 12:30 PM
    </textarea>
    
    <h2> Time Table </h2>
    <div id="debug"></div>
    
    <script type="text/javascript">
    // From: 
    // http://www.webdeveloper.com/forum/showthread.php?282653-How-can-I-to-create-a-table-and-create-2-columns-for-each-row-on-the-fly
    
    var recs = [];
    function creatTimeTable() {
      var str = '';
      recs = document.getElementById('TArea').value.split('\n');
    
      for (var i=0; i<recs.length-1; i++) {
        var tarr = recs[i].split(';');
        for (var j=0; j<tarr.length; j=j+2) {
          str += '<tr><td>'+tarr[j]+'</td>';
          if (tarr[j+1]) { str += '<td>'+tarr[j+1]+'</td>'; }
          str += '</tr>';
        }
      }
      var tstr = '<table border="1">';
          tstr += '<tr><th>Start Time</th><th>End Time</th></tr>';
          tstr += str;
          tstr += '</table>';
    
      var dbug = document.getElementById('debug');
      dbug.innerHTML = tstr;
    }
    
    window.onload = function() {
      creatTimeTable();
    }
    </script>
    
    </body>
    </html>
    You did not specify where the raw data was coming from, so I just put it into a <textarea> for now

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles