Javascript 存储tr';将ID和类转换为js数组并在php中读取
我有一张有一群孩子的桌子,在每个tr中我都有孩子的ID和描述他吃了什么的类,我需要当我点击一个按钮时,每行的ID和类都必须存储到js数组中,我一直在尝试用push和类似的东西存储到数组中Javascript 存储tr';将ID和类转换为js数组并在php中读取,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我有一张有一群孩子的桌子,在每个tr中我都有孩子的ID和描述他吃了什么的类,我需要当我点击一个按钮时,每行的ID和类都必须存储到js数组中,我一直在尝试用push和类似的东西存储到数组中 var array = []; $("#tbody tr").each(function() { array.push(this.id); }); 但是运气不好因为我需要两个值然后它爆炸了 这是桌子的结构 <table class="table -dark -striped" id="datata
var array = [];
$("#tbody tr").each(function() {
array.push(this.id);
});
但是运气不好因为我需要两个值然后它爆炸了
这是桌子的结构
<table class="table -dark -striped" id="datatable">
<thead>
<tr>
<th class="col -xs-9 -lg-9 -xl-9 _text-right">Nombre del Alumno</th>
<th class="col -xs-3 -lg-3 -xl-3">Asistencia</th>
</tr>
</thead>
<tbody id='tbody'>
<tr id="1" class="lunch">
<td class="-user -detailed _text-right">Richard Mattey</td>
<td class="_text-right">
<div class="btn-group asistencia">
<a class="btn -l -dark -block lunch" href="javascript:void(0)" servicio="lunch">Lunch</a>
<a class="btn -l -dark -block vianda -success" href="javascript:void(0)" servicio="vianda">Vianda</a>
<a class="btn -l -dark -block inasistente" href="javascript:void(0)" servicio="inasistente"><i class="fa fa-ban"></i></a>
</div>
</td>
</tr>
我需要的是将每个
tr
(id和class)的两个值存储到一个JS数组中,然后在单击save按钮时通过ajax发送,然后在PHP中处理它 您可以使用querySelectorAll
迭代tbody
中的所有tr
然后只需从DomNode收集id和类名,如下所示:
const trs=Array.from(document.querySelectorAll('tbody>tr');
常量数据=trs.map((tr)=>({
id:tr.id,
类:tr.classList.toString()
}));
控制台日志(数据)代码>
校友名号
亚洲
理查德·马蒂
您可以使用jQuery方法为每个tr
元素执行一个函数,并获取id和类值:
var arr = [];
$('#tbody tr').each( function (i, tr) {
arr.push({
id: $(tr).attr('id'),
class: $(tr).attr('class')
});
});
或您可以使用jQuery函数迭代所有tr
元素并构造数组:
var arr2 = $.map( $('#tbody tr'), function (tr) {
return {
id: $(tr).attr('id'),
class: $(tr).attr('class')
}
});
以下是一个工作示例:
$(文档).ready(函数(){
//使用每个函数
var-arr=[];
$('#tbody tr')。每个(函数(i,tr){
arr.push({
id:$(tr.attr('id'),
类:$(tr.attr('class'))
});
});
控制台日志(arr);
//使用jquery映射函数
var arr2=$.map($('#tbody tr'),函数(tr){
返回{
id:$(tr.attr('id'),
类:$(tr.attr('class'))
}
});
控制台日志(arr2);
});代码>
校友名号
亚洲
理查德·马蒂
您可以使用以下功能获取表中每个tr
项的ID和类:
/* The function that fetches the data. */
function fetchData() {
var
/* Create an object to store the data. */
data = {},
/* Get every 'tr' element of the 'tbody'. */
elements = document.querySelectorAll("#tbody > tr");
/* For each element, save the id as a property & the class as a value in the obj. */
[].forEach.call(elements, (element) => data[element.id] = element.className);
/* Stringify and return the data to pass them over to the server. */
return JSON.stringify(data);
}
上面的函数将数据作为属性值对存储在对象中,并对对象进行字符串化,以便将其传递给服务器。然后,您可以使用foreach as
构造轻松地在PHP中访问:
示例:
foreach ($data as $id => $class) {
# ...
}
片段:
foreach ($data as $id => $class) {
# ...
}
/*获取数据的函数*/
函数fetchData(){
变量
/*创建一个对象来存储数据*/
数据={},
/*获取“tbody”的每个“tr”元素*/
elements=document.queryselectoral(#tbody>tr);
/*对于每个元素,将id另存为属性,将类另存为obj中的值*/
[]forEach.call(elements,(element)=>data[element.id]=element.className);
/*字符串化并返回数据以将其传递给服务器*/
返回JSON.stringify(数据);
}
获取表数据
您尝试了什么?您所说的只是一个目标,而不是实现该目标的任何代码相关问题。花点时间阅读,我为我的错误感到抱歉我刚刚编辑了它,这就像我第三次问,我已经找到了一个解决方案,你的建议银行!我不得不编辑一下!但它是有效的!:),最后是这样的:/*对于每个元素,将id保存为属性,将类保存为obj中的值。*/[].forEach.call(elements,(element)=>data[0]=element.className);[].forEach.call(elements,(element)=>data[1]=element.id);很高兴我能帮助@gamn2090。但是要小心,因为您的编辑实际上会覆盖每个循环对象的0
和1
属性。看看我的编辑,看看我的意思。但是如果我这样做的话,我得到了这个:index:[“1”,“午餐”]
在php中,我需要访问它的每一个,如果我这样做,它就不起作用了:If($request->ajax()){$post=$request->all();foreach($post as$key=>$value){print\r($value)}
在编辑您的问题之前,我觉得您好像想将表中所有tr
元素的id
和类
传递给服务器。现在,很明显,您只需要一个按钮被单击的tr
元素,在本例中情况完全不同。查看我编辑的答案,看看你是如何做到这一点的。不,不,你所理解的正是我想做的>。