Reputation: 121
Page: Demo jsfiddle
I am working on getting a table created with many different features.
Function: sortTable sorts the table. (Working)
Function: table_new pulls up new line. (Working)
Function: table_Cancel cancels new line & Edit line. (Working)
Feature: If table is to large, it will turn on scrolling feature. (Working) (View CSS in Demo.)
I am unable to get the function: table_add_row, table_edit_row to work correctly. Also in table_add_row, I cant figure out how to add the < FORM> section to be imported.
I will be submitting changes to PHP > MySQL database, then reloading table on submission.
HTML Section:
<table border="1" id="myTable" class="table recipe-table f_center">
<div class="thead">
<tr>
<th class="tb_head" style="Width:auto; background-color:#e2e0cb;">
<button id="new" onclick="table_new()">New</button>
<button id="Cancel" onclick="table_Cancel()" class="tb_hide">Cancel</button>
</th>
<th class="tb_head tb_hide" style="Width:auto; background-color:#e2e0cb;">id</th>
<th class="tb_head" style="Width:auto; background-color:#e2e0cb;" onclick="sortTable(2)"><span class="tb_head_a">A</span>
</th>
<th class="tb_head" style="Width:auto; background-color:#e2e0cb;" onclick="sortTable(3)"><span class="tb_head_a">B</span>
</th>
<th class="tb_head" style="Width:auto; background-color:#e2e0cb;" onclick="sortTable(4)"><span class="tb_head_a">C</span>
</th>
</div>
<div class="tbody">
<tr class="tb_new" id="table_new">
<!--<form>-->
<td>
<button id="t_new" name="t_new">Submit</button>
</td>
<td class="tb_hide">
<input type="text" id="ID_Edit">
</td>
<td>
<input type="text" id="A_New" class="measurement_size">
</td>
<td>
<input type="text" id="B_New" class="measurement_size">
</td>
<td>
<input type="text" id="C_New" class="measurement_size">
</td>
<!--</form>-->
</tr>
<tr>
<!--<form>-->
<td>
<button id="table_edit_1" onclick="table_edit_row(1)">Edit</button>
<button id="table_submit_1" onclick="table_submit(1)" class="tb_hide">submit</button>
</td>
<td class="tb_hide">1</td>
<td>7</td>
<td>8</td>
<td>9</td>
<!--</form>-->
</tr>
<tr>
<!--<form>-->
<td>
<button onclick="table_edit_row(2)">Edit</button>
<button id="table_submit_2" onclick="table_submit(2)" class="tb_hide">submit</button>
</td>
<td class="tb_hide">2</td>
<td>1</td>
<td>2</td>
<td>3</td>
<!--</form>-->
</tr>
<tr>
<!--<form>-->
<td>
<button onclick="table_edit_row(3)">Edit</button>
<button id="table_submit_3" onclick="table_submit(3)" class="tb_hide">submit</button>
</td>
<td class="tb_hide">3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<!--</form>-->
</tr>
</div>
</table>
Java Script:
function table_new() {
document.getElementById("table_new").style.display = "table-row";
document.getElementById("new").style.display = "none";
document.getElementById("Cancel").style.display = "block";
document.getElementById('A_New').value = '';
document.getElementById('B_New').value = '';
document.getElementById('C_New').value = '';
document.getElementById("ID_Edit").value = '';
}
function table_Cancel() {
document.getElementById("table_new").style.display = "none";
document.getElementById("new").style.display = "block";
document.getElementById("Cancel").style.display = "none";
document.getElementById('A_New').value = '';
document.getElementById('B_New').value = '';
document.getElementById('C_New').value = '';
document.getElementById("ID_Edit").value = '';
var ID, table_name, rowLength;
table_name = document.getElementById("myTable");
rowLength = table_name.rows.length;
for (var i = 1; i < rowLength; i += 1) {
ID = table_name.rows[i].cells[2].innerHTML;
document.getElementById("table_edit_" + ID).style.display = "block";
document.getElementById("table_submit_" + ID).style.display = "none";
}
}
function table_add_row() {
var table_name, row, ID, A, B, C, number_row, temp_number, temp_found, temp_submit;
table_name = document.getElementById("myTable");
number_row = 0;
temp_found = 0;
for (var i = 2, row; row = table_name.rows[i]; i++) {
temp_number = "new_" + number_row;
if (temp_number = table_name.rows[i].cells[1].innerHTML) {
number_row++
i = 2;
}
}
row = table_name.insertRow(2);
ID = document.getElementById("ID_Edit").value
var cell0 = row.insertCell(0);
var cell1 = row.insertCell(1);
var cell2 = row.insertCell(2);
var cell3 = row.insertCell(3);
var cell4 = row.insertCell(4);
temp_number = "new_" + number_row;
temp_submit = "table_submit_" + temp_number;
cell0.innerHTML = '<button id="table_edit_' + temp_found + '" onclick="table_edit_row("' + temp_found + '")">Edit</button><button id="' + temp_submit + '" onclick="table_submit(temp_number)" class="tb_hide">submit</button>';
cell1.innerHTML = temp_found;
cell2.innerHTML = document.getElementById('A_New').value;
cell3.innerHTML = document.getElementById('B_New').value;
cell4.innerHTML = document.getElementById('C_New').value;
table_Cancel()
}
function table_edit_row(x) {
document.getElementById("new").style.display = "none";
document.getElementById("Cancel").style.display = "block";
var ID, A, B, C, temp_A, temp_B, temp_C, table_name, table_value;
table_name = document.getElementById("myTable");
for (var i = 1, row; row = table_name.rows[i]; i++) {
if (table.rows[i].cells[1].innerHTML = x) {
ID = table_name.rows[i].cells[1].innerHTML;
A = table_name.rows[i].cells[2].innerHTML;
B = table_name.rows[i].cells[3].innerHTML;
C = table_name.rows[i].cells[4].innerHTML;
document.getElementById('table_edit_' + ID).style.display = "None";
document.getElementById('table_submit_' + ID).style.display = "block";
table_name.rows[i].cells[2].innerHTML = '<input type="text" id="a_edit" value="' + A + '">';
table_name.rows[i].cells[3].innerHTML = '<input type="text" id="b_edit" value="' + B + '">';
table_name.rows[i].cells[4].innerHTML = '<input type="text" id="c_edit" value="' + C + '">';
}
}
}
function sortTable(n) {
var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
table = document.getElementById("myTable");
switching = true;
//Set the sorting direction to ascending:
dir = "asc";
/*Make a loop that will continue until
no switching has been done:*/
while (switching) {
//start by saying: no switching is done:
switching = false;
rows = table.getElementsByTagName("TR");
/*Loop through all table rows (except the
first, which contains table headers):*/
for (i = 2; i < (rows.length - 1); i++) {
//start by saying there should be no switching:
shouldSwitch = false;
/*Get the two elements you want to compare,
one from current row and one from the next:*/
x = rows[i].getElementsByTagName("TD")[n];
y = rows[i + 1].getElementsByTagName("TD")[n];
/*check if the two rows should switch place,
based on the direction, asc or desc:*/
if (dir == "asc") {
if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
//if so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
} else if (dir == "desc") {
if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
//if so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
}
}
if (shouldSwitch) {
/*If a switch has been marked, make the switch
and mark that a switch has been done:*/
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
//Each time a switch is done, increase this count by 1:
switchcount++;
} else {
/*If no switching has been done AND the direction is "asc",
set the direction to "desc" and run the while loop again.*/
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
Page: Demo jsfiddle
Please no jquery script, I want normal java script if possible.
Upvotes: 0
Views: 109
Reputation: 121
I have figured out all the session's and will post change's later.
Upvotes: 0
Reputation: 730
I see a lot of problems. I'll go ahead and solve your add row problem.
To start you don't have the submit button doing anything so change that line to this
<button onclick="table_add_row()" id="t_new" name="t_new">Submit</button>
Then change your table_add_row function to this
function table_add_row() {
var table_name, row, ID, A, B, C, number_row, temp_number,temp_found, temp_submit;
table_name = document.getElementById("myTable");
number_row = 0;
temp_found = 0;
row = table_name.insertRow(2);
ID = document.getElementById("ID_Edit").value
var cell0 = row.insertCell(0);
var cell1 = row.insertCell(1);
var cell2 = row.insertCell(2);
var cell3 = row.insertCell(3);
//var cell4 = row.insertCell(4);
temp_number = "new_" + number_row;
temp_submit = "table_submit_" + temp_number;
cell0.innerHTML = '<button id="table_edit_' + temp_found + '"onclick="table_edit_row("' + temp_found + '")">Edit</button><button id="' + temp_submit + '" onclick="table_submit(temp_number)" class="tb_hide">submit</button>';
cell1.innerHTML = temp_found;
cell1.innerHTML = document.getElementById('A_New').value;
cell2.innerHTML = document.getElementById('B_New').value;
cell3.innerHTML = document.getElementById('C_New').value;
}
Upvotes: 1