?
Solved

count row of <tr> then create <select><option> Javascript

Posted on 2009-04-06
5
Medium Priority
?
1,044 Views
Last Modified: 2012-05-06
Hi,

I'm trying to create some javascript to count the number of rows from a table:

<table border="1" id="t1">
<tr id="row1"><td>field 1</td></tr>
<tr id="row2"><td>field 2</td></tr>
<tr id="row3"><td>field 3</td></tr>
</table>

Then from this count create a <select><option> list. Notice the id and values are the same.

<form>
<select name="Append new row before this selected row" id="forAppendNewRow">
<option id="row1">field 1</option>
<option id="row2">field 2</option>
<option id="row3">field 3</option>
</select>
</form>

Thank you,
vkimura
0
Comment
Question by:Victor Kimura
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
5 Comments
 
LVL 4

Expert Comment

by:y0usuf
ID: 24077656
As I see your question, I can suggest a very simplistic answer but you might have to tweak it a little to change that.

First get the the innerHtml of the table and then use regular expression and replace function to replace tr with option tag and just remove td tags and thats it!

if you are using any javascript library like jquery or dojo then it will be very easy to do this
0
 
LVL 15

Accepted Solution

by:
fsze88 earned 1000 total points
ID: 24078081

<table border="1" id="t1">
<tbody>
<tr id="row1"><td>field 1</td></tr>
<tr id="row2"><td>field 2</td></tr>
<tr id="row3"><td>field 99</td></tr>
</tbody>
</table>
 
<form>
<select name="selectionName" id="forAppendNewRow">
<option id="row1">field 1</option>
<option id="row2">field 2</option>
<option id="row3">field 3</option>
</select>
</form>
 
 
<script type="text/javascript">
var i;
var tabletag = document.getElementById("t1");
var theTableBody = tabletag.tBodies[0]
var tableBodychilds = theTableBody.childNodes;
var idArray = new Array();
var fieldArray = new Array();
var tdtag;
var numOfTr;
numOfTr = 0;
for (i=0;i<tableBodychilds.length ; i++){
  if (tableBodychilds[i].nodeName == 'TR'){
    numOfTr++;
//    alert(tableBodychilds[i].attributes['id'].value);
    idArray.push(tableBodychilds[i].attributes['id'].value);
    tdtag = tableBodychilds[i].firstChild;
    fieldArray.push(tdtag.innerHTML);
//    alert(tdtag.innerHTML);
  }
}
 
var selectionObj = document.getElementById("forAppendNewRow");
selectionObj.length=0;
 
for (i=0;i<numOfTr ; i++){
  var newOption = new Option(fieldArray[i], idArray[i]);;
 
  newOption.setAttribute( 'id', idArray[i] );
  selectionObj.options[i] = newOption;
}
 
 
</script>

Open in new window

0
 

Author Comment

by:Victor Kimura
ID: 24078087
Hi y0usuf,

I don't wish to use dojo or jquery right now since I'm trying to learn javascript. Can you show me the code for it?

Thank you,
vkimura
0
 
LVL 4

Expert Comment

by:y0usuf
ID: 24081839
you mean in Javascript or Jquery?
0
 
LVL 4

Assisted Solution

by:y0usuf
y0usuf earned 1000 total points
ID: 24082463
try the following.

// call this in onload 
function tableLoad() {
            var tabletag = document.getElementById("t1").innerHTML;
            var select = tabletag.replace(/tr/gi, "option").replace(/tbody/gi, "select").replace(/<td>|<\/td>/gi, "");
            alert(select);
        }

Open in new window

0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
This article discusses how to implement server side field validation and display customized error messages to the client.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question