Reputation: 77
function myCreateFunction() {
var sel = document.getElementById("osp");
var text = document.getElementById("fill_form");
var tsp = sel.options[sel.selectedIndex].value;
var name = text.name.value;
var age = text.age.value;
if (document.getElementById("r1").checked) {
var radio_selected = document.getElementById("r1").value;
} else if (document.getElementById("r2").checked) {
var radio_selected = document.getElementById("r2").value;
}
var table = document.getElementById("myTable");
var row = table.insertRow(table.rows.length);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
cell1.innerHTML = name;
cell2.innerHTML = radio_selected;
cell3.innerHTML = age;
cell4.innerHTML = tsp;
var update = "Update";
var remove = "Remove";
I want to update the row through update hyperlink, when user click on update the value of that row must passed to the function myUpdateFunction().
var li='<a href="#" onclick="myUpdateFunction(name);" > Update</a>'; cell5.innerHTML = li;
}
function myCreateFunction() {
var sel = document.getElementById("osp");
var text = document.getElementById("fill_form");
var tsp = sel.options[sel.selectedIndex].value;
var name = text.name.value;
var age = text.age.value;
if (document.getElementById("r1").checked) {
var radio_selected = document.getElementById("r1").value;
} else if (document.getElementById("r2").checked) {
var radio_selected = document.getElementById("r2").value;
}
var table = document.getElementById("myTable");
var row = table.insertRow(table.rows.length);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
cell1.innerHTML = name;
cell2.innerHTML = radio_selected;
cell3.innerHTML = age;
cell4.innerHTML = tsp;
var update = "Update";
var remove = "Remove";
var li = '<a href="#" onclick="alert(document.write(rows.selected.text));" > Update</a>';
cell5.innerHTML = li;
}
function myDeleteFunction() {
var table = document.getElementById("myTable");
document.getElementById("myTable").deleteRow(table.rows.length - 1);
}
function myUpdateFunction(nam) {
var oTable = document.getElementById('myTable');
//gets rows of table
var rowLength = oTable.rows.length;
//loops through rows
for (i = 0; i < rowLength; i++) {
//gets cells of current row
var oCells = oTable.rows.item(i).cells;
//gets amount of cells of current row
var cellLength = oCells.length;
//loops through each cell in current row
for (var j = 0; j < cellLength; j++) {
// get your cell info here
var cellVal = oCells.item(j).innerHTML;
alert(cellVal);
}
}
}
function ResetForm() {
document.getElementById("fill_form").reset();
}
table {
border: solid black 1px;
/*width:40%;*/
}
td {
border: solid black 1px;
width: 120px;
}
#person_table {
/*border: solid aqua 2px;*/
width: 49%;
float: left;
background-color: #ffccfe;
}
#person_form {
float: left;
/*border: solid blue 2px;*/
width: 24%;
background-color: #cdff94;
}
label {
width: 15%;
display: inline-block;
/*border: solid chartreuse 2px;*/
padding: 10px;
}
.nam {
padding-bottom: 5px;
padding-top: 5px;
padding-left: 5px;
padding-right: 5px;
}
#nam2 {
text-align: left;
padding: 5px;
}
#person_form #nam2 input {
width: 100px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script src="js6.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="mystyle.css">
<body>
<div id="person_table">
<h3>List Of Persons</h3>
<table>
<tr>
<td>Name</td>
<td>Gender</td>
<td>Age</td>
<td>City</td>
<td>Action</td>
</tr>
</table>
<table id="myTable">
</table>
</div>
<div id="person_form">
<h3>Add/Update Person Form</h3>
<form id="fill_form">
<div class="nam">
<label> Name :</label>
<input type="text" name="name">
</div>
<div class="nam">
<label> Gender:</label>
<input type="radio" name="gender" id="r1" value="male">Male
<input type="radio" name="gender" id="r2" value="female">Female
</div>
<div class="nam">
<label> Age :</label>
<input type="text" name="age">
</div>
<div class="nam">
<label> City:</label>
<select name="cities_list" id="osp">
<option value="lahore">Lahore</option>
<option value="Islambad">Islambad</option>
<option value="Karachi">Karachi</option>
<option value="Okara">Okara</option>
</select>
</div>
<input id="button" type="button" value=" Reset " onclick="ResetForm()">
<input id="button" type="button" value=" Add " onclick="myCreateFunction()">
<input id="button" type="button" value=" Update ">
</form>
</div>
</body>
</html>
Upvotes: 0
Views: 104
Reputation: 2815
You need to create a myUpdateFunction() and pass it a variable indicating which table row to update. I've updated the answer with a completed functions to add and modify users in the table.
<div id="person_table">
<h3>List Of Persons</h3>
<table id="myTable">
<tr>
<td>Name</td>
<td>Gender</td>
<td>Age</td>
<td>City</td>
<td>Action</td>
</tr>
</table>
</div>
<div id="person_form">
<h3>Add/Update Person Form</h3>
<form id="fill_form">
<input type="hidden" name="rowIndex" id="rowIndex" value="1" />
<div class="nam">
<label> Name :</label>
<input type="text" name="name" id="personName">
</div>
<div class="nam">
<label> Gender:</label>
<input type="radio" name="gender" id="r1" value="male">Male
<input type="radio" name="gender" id="r2" value="female">Female
</div>
<div class="nam">
<label> Age :</label>
<input type="text" name="age" id="personAge">
</div>
<div class="nam">
<label> City:</label>
<select name="cities_list" id="osp">
<option value="lahore">Lahore</option>
<option value="Islambad">Islambad</option>
<option value="Karachi">Karachi</option>
<option value="Okara">Okara</option>
</select>
</div>
<input id="personFormReset" type="button" value=" Reset " onclick="resetForm()">
<input id="personFormModify" type="button" value=" Add " onclick="modifyTable()">
</form>
</div>
//modifyTable() is used to add and modify records in the table
function modifyTable() {
//get name
var personName = document.getElementById("personName").value;
//get age
var personAge = document.getElementById("personAge").value;
//get city
var osp = document.getElementById("osp");
var personCity = osp.options[osp.selectedIndex].value;
//get gender
if (document.getElementById("r1").checked) {
var personGender = document.getElementById("r1").value;
} else if (document.getElementById("r2").checked) {
var personGender = document.getElementById("r2").value;
}
//the table
var table = document.getElementById("myTable");
//get the value for the row we want to add or modify
//rowIndex is used to keep track of where in the table we need to add or update
var rowIndex = parseInt(document.getElementById("rowIndex").value);
//if the rowIndex is not the same as the number of rows in the table, we are updating a record, and we need to remove the old data
if(table.rows.length != rowIndex) {
//updating a record
table.deleteRow(rowIndex); //remove the old table row
} else {
//adding a record
//update the tableIndex
document.getElementById("rowIndex").value = rowIndex+1;
}
//get the row we want to add/modify
var row = table.insertRow(rowIndex);
var cell1 = row.insertCell();
var cell2 = row.insertCell();
var cell3 = row.insertCell();
var cell4 = row.insertCell();
var cell5 = row.insertCell();
cell1.innerHTML = personName;
cell2.innerHTML = personGender;
cell3.innerHTML = personAge;
cell4.innerHTML = personCity;
var update = "Update";
var remove = "Remove";
var action='<a href="#" onclick="myUpdateFunction('+(rowIndex)+');" > Update</a>';
cell5.innerHTML = action;
//clear the form. this function also resets the tableIndex which is critical if we just did a table modification, because the index will not be at the end of the table
resetForm();
}
//
function myUpdateFunction(tableRow) {
//get name
document.getElementById("personName").value = myTable.rows[tableRow].cells[0].innerHTML;
//get gender
if(myTable.rows[tableRow].cells[1].innerHTML == "male") {
document.getElementById("r1").checked = true;
} else {
document.getElementById("r2").checked = true;
}
//get age
document.getElementById("personAge").value = myTable.rows[tableRow].cells[2].innerHTML;
//get city
for(var i = 0; i < document.getElementById("osp").length; i++) {
if(document.getElementById("osp")[i].value == myTable.rows[tableRow].cells[3].innerHTML) {
document.getElementById("osp").selectedIndex = i;
break;
}
}
//get the rowIndex
//this makes sure we update the correct row when the user clicks 'update' and we call modifyTable();
document.getElementById("rowIndex").value = tableRow;
//update the button text
document.getElementById("personFormModify").value = "Update";
}
function resetForm() {
//reset name
document.getElementById("personName").value = "";
//reset gender
document.getElementById("r1").checked = false;
document.getElementById("r2").checked = false;
//reset age
document.getElementById("personAge").value = "";
//reset city
document.getElementById("osp").selectedIndex = 0;
//reset button
document.getElementById("personFormModify").value = "Add";
//make sure the rowIndex is updated, so the table is ready to insert a new record at the right place
document.getElementById("rowIndex").value = document.getElementById("myTable").rows.length;
}
There was quite a bit of cleanup you can do to your javascript and html to remove errors, remove invalid code, make it cleaner, easier to read, and more efficient. This example is just to show you how the concept works. You can see it working in this JS Fiddle: http://jsfiddle.net/5Lesopx1/1/
Hope that helps! :-)
Upvotes: 1