เกี่ยวกับการลบแถวโดยใช้ javascript
ตอนนี้ผมสร้างตารางโดยใช้ js แต่ให้สามารถเลือกที่จะแทรกแถวได้ดังนี้
var row = tbproduct.insertRow(value); //value = แถวที่ต้องการแทรก
อันนี้สร้างปุ่มลบ
var cell = row.insertCell(0);
cell.appendChild(tdlink('product')); // product = id ของตาราง
function tdlink(table){
var tb = $E(table);
var cell = document.createElement("td");
a = document.createElement('a');
a.className = 'delete';
a.href = 'javascript:void(0)';
a.onclick=function(){
deleteTd(this,tb);
};
cell.appendChild(a);
return cell;
}
function deleteTd(r,table){
var i=r.parentNode.parentNode.rowIndex;
table.deleteRow(i);
}
ไม่สามารถใช้งานได้ครับ
var row = tbproduct.insertRow(value); //value = แถวที่ต้องการแทรก
อันนี้สร้างปุ่มลบ
var cell = row.insertCell(0);
cell.appendChild(tdlink('product')); // product = id ของตาราง
function tdlink(table){
var tb = $E(table);
var cell = document.createElement("td");
a = document.createElement('a');
a.className = 'delete';
a.href = 'javascript:void(0)';
a.onclick=function(){
deleteTd(this,tb);
};
cell.appendChild(a);
return cell;
}
function deleteTd(r,table){
var i=r.parentNode.parentNode.rowIndex;
table.deleteRow(i);
}
ไม่สามารถใช้งานได้ครับ
ที่สำคัญ เรื่องเกี่ยวกับตารางก็มีบทความบนเว็บ
ประเด็นที่เจอกันเสมอสำหรับปัญหาเกี่ยวกับตารางคือ ไม่มี tbody ครับ ทำให้ไม่สามารถใช้งานคำสั่งได้
table.tBodies(0).appendChild(tr);
ปัญหาคือ ไม่สามารถลบแถวได้ครับ
โครงสร้างตารางคือ
<table id="tbproduct">
<tbody id=tbody_product></tbody>
</table>
var tbproduct = document.getElementById("tbproduct");
var row = tbproduct.insertRow(value);
var cell = row.insertCell(0);
cell.appendChild(tdlink('tbproduct'));
function tdlink(table){
var tb = $E(table);
var cell = document.createElement("td");
a = document.createElement('a');
a.className = 'delete';
a.href = 'javascript:void(0)';
a.onclick=function(){
deleteTd(this,tb);
};
cell.appendChild(a);
return cell;
}
function deleteTd(r,table){
var i=r.parentNode.parentNode.rowIndex;
table.deleteRow(i);
}
code ตรงนี้สามารถแทรกแถวได้ครับ คอลัมที่ 0 อันนี้สร้างปุ่มลบ (row.insertCell(0);) พอกดแล้วไม่สามารถลบได้ครับ แต่พอกดแล้วสามารถเรียกฟังชั่น deleteTd ได้ครับ
ปล โค๊ด deleteTd สามารถทำงานได้ถ้าสร้างมาจาก php แบบนี้ครับ
แต่ถ้าสร้างจาก php มาก่อน var i=r.parentNode.parentNode.rowIndex; คืนท่าแถวมาให้