Javascript 如何获得数据表数组的确切位置?
我正在用PHP+JS+SQL做crud(创建、读取、更新、删除)表,我想做下一步: 我有一个包含用户的表(我从数据库中获取此数据): 当我点击“编辑”图标(绿色编辑图标)时,我可以输入表格的值 我不知道如何获得数组的确切位置(为了显示所有这些用户,我使用了一个数组ofc)将其保存在一个变量中,以便以后进行查询以更新信息 你们知道我想说什么吗,伙计们 这是我的密码:Javascript 如何获得数据表数组的确切位置?,javascript,php,jquery,datatables,Javascript,Php,Jquery,Datatables,我正在用PHP+JS+SQL做crud(创建、读取、更新、删除)表,我想做下一步: 我有一个包含用户的表(我从数据库中获取此数据): 当我点击“编辑”图标(绿色编辑图标)时,我可以输入表格的值 我不知道如何获得数组的确切位置(为了显示所有这些用户,我使用了一个数组ofc)将其保存在一个变量中,以便以后进行查询以更新信息 你们知道我想说什么吗,伙计们 这是我的密码: <table class='table table-bordered table-hover' class='displa
<table class='table table-bordered table-hover' class='display' style='width:100%; text-align: center;' id='tableTest'>
<thead>
<tr>
<th>Editar</th>
<th>Nombre</th>
<th>Apellido 1</th>
<th>Apellido 2</th>
<th>Email</th>
<th>Eliminar</th>
</tr>
</thead>
<tbody>
<?php foreach ($res_table as $r){ ?>
<tr>
<td><span class="fas fa-edit editar grow" onclick="updateData(this)"></span></td>
<td><?php echo $r->usuario?></td>
<td><?php echo $r->apellido1?></td>
<td><?php echo $r->apellido2?></td>
<td><?php echo $r->email?></td>
<td><span class="fas fa-trash-alt grow" onclick="updateData(this)"></span></td>
</tr>
<?php } ?>
</tbody>
</table>
<div id="contenedorForm">
</div>
编辑
名义
阿佩利多1号
阿佩利多2号
电子邮件
Eliminar
这是我的JS
// Función para actualizar los datos de la tabla.
function updateData(nodo){
var nodoTd = nodo.parentNode; //Nodo TD
var nodoTr = nodoTd.parentNode; //Nodo TR
var nodoContenedorForm = document.getElementById('contenedorForm'); //Nodo DIV
var nodosEnTr = nodoTr.getElementsByTagName('td');
var editData = nodosEnTr[0].textContent;
var usuario = nodosEnTr[1].textContent;
var apellido1 = nodosEnTr[2].textContent;
var apellido2 = nodosEnTr[3].textContent;
var email = nodosEnTr[4].textContent;
var opciones = nodosEnTr[5].textContent;
var nuevoCodigoHtml =
'<td><span class="fas fa-edit editar grow" onclick="updateData(this)"></span></td>'+
'<td><input onblur="getIdInputFromDatabase()" type="text" name="usuario" id="usuario" value="' + usuario + '" size="20"></td>'+
'<td><input onblur="getIdInputFromDatabase()" type="text" name="apellido1" id="apellido1" value="' + apellido1 + '" size="20"></td>'+
'<td><input onblur="getIdInputFromDatabase()" type="text" name="apellido2" id="apellido2" value="' + apellido2 + '" size="20"></td>'+
'<td><input onblur="getIdInputFromDatabase()" type="text" name="email" id="email" value="' + email + '" size="20"></td>' +
'<td><span class="fas fa-trash-alt editar grow" onclick="updateData(this)"></span></td>';
nodoTr.innerHTML = nuevoCodigoHtml;
nodoContenedorForm.innerHTML =
'Pulse Aceptar para guardar los cambios o cancelar para cancelActionlos' +
'<form name = "formulario" action="general" method="get" onsubmit="capturarEnvio()" onreset="cancelAction()">' +
'<input class="boton" type = "submit" value="Aceptar">' +
'<input class="boton" type="reset" value="Cancelar">';
}
function getIdInputFromDatabase(){
alert("I NEED TO KNOW THE POSITION OF THE ARRAY WHERE I DID ON BLUR");
}
// Data tables.
$(function () {
$('#tableTest').DataTable({
"language": {"url": "//cdn.datatables.net/plug-ins/1.10.20/i18n/Spanish.json"},
"paging": true,
"lengthChange": false,
"searching": true,
"ordering": true,
"info": false,
"autoWidth": false,
"scrollX": false
});
});
</script>
//在塔布拉大道上实施的职能。
函数updateData(nodo){
var nodoTd=nodo.parentNode;//nodo TD
var nodoTr=nodoTd.parentNode;//Nodo TR
var nodocontentedorform=document.getElementById('contendorform');//Nodo DIV
var nodosEnTr=nodoTr.getElementsByTagName('td');
var editData=nodosEnTr[0]。textContent;
var usuario=nodosEnTr[1]。textContent;
var apellido1=nodosEnTr[2]。textContent;
var apellido2=nodosEnTr[3]。textContent;
var email=nodosEnTr[4]。textContent;
var optciones=nodosEnTr[5]。textContent;
var nuevoCodigoHtml=
''+
''+
''+
''+
'' +
'';
nodoTr.innerHTML=nuevoCodigoHtml;
nodocontentedorform.innerHTML=
"从坎比奥斯到坎比奥斯,从坎比奥斯到坎比奥斯,从坎比奥斯到坎比奥斯,从坎比奥斯到坎比奥斯,从坎比奥斯到坎比奥斯+
'' +
'' +
'';
}
函数getIdInputFromDatabase(){
警报(“我需要知道我在模糊上所做的阵列的位置”);
}
//数据表。
$(函数(){
$('#tableTest')。数据表({
“语言”:{“url”:”//cdn.datatables.net/plug-ins/1.10.20/i18n/Spanish.json“},
“分页”:正确,
“长度变化”:错误,
“搜索”:没错,
“排序”:正确,
“信息”:错误,
“自动宽度”:false,
“scrollX”:错误
});
});
伙计们,我该怎么做?你能帮助我吗?我搜索了DataTables API,但我迷路了。
提前谢谢你
祝你有愉快的一天 由于有一个名为
ID
的字段,您可以在首次构建表时(在
循环中)将其存储在HTML中,这可以作为tr
的属性,例如
<tr data-id='<?php echo $r->id?>'>
或
然后,您需要将该id
传递给您的内联编辑,以某种方式,这可以通过向onsubmit添加一个参数来实现,例如:
'... onsubmit="capturarEnvio(' + id + ')" ...'
我猜数据库中的数据有一个主键,可能叫做
id
。因此,可以将id添加到行的某个位置,作为tr
的属性(不要使用style='display:none'使用css隐藏它)。然后,您的编辑通过其ID(而不是可能不匹配的行索引)知道正在编辑哪一行。哦,是的。。。我有一个叫做ID的字段!好主意!如果我想访问该ID以将其存储在变量中并在以后执行查询,该怎么办?例如,从该id运行SQL update语句。我该怎么做?提前谢谢你!与您已经做的相同,如果是一列,则为nodoTr[0].textContent
(并调整其他列索引)。如果是数据属性,则$(nodoTr).data(“id”)
(或与之相当的香草js)。非常感谢,伙计!!!!!!我不能投你的票,因为我是新来的,但真的谢谢你!记录在案的是,这种“按偏移量更新”的方法在许多应用程序中一直是问题的根源。当两个或两个以上的人在处理数据时,其中一人删除了一条记录,导致另一人的更改应用于不正确的记录,因为相对偏移量已更改。使用freedomn-m提到的记录的唯一ID是一种方法。谢谢。你是老板!
var id = $(nodoTr).data("id")
var id = nodoTr[0].textContent;
'... onsubmit="capturarEnvio(' + id + ')" ...'