[英]data-th JS only works once per page
I am using the code from this CodePen to make my tables responsive: http://codepen.io/anon/pen/myayee 我使用此CodePen中的代码使我的表响应: http ://codepen.io/anon/pen/myayee
Everything on my site is working as in his example, however I want to add more than 1 table to the page. 我网站上的所有内容都在他的示例中工作,但我想在页面中添加多个表格。 When I do this, only the first table on the page get's the "data-th=" added to it when the browser is made smaller, the rest of the tables are blank.
当我这样做时,只有页面上的第一个表格在浏览器变小时才会添加“data-th =”,其余表格都是空白的。 I would like it to be added to all of the table headers on the page, but not sure how to change his code to accomplish it.
我希望它被添加到页面上的所有表头,但不知道如何更改他的代码来完成它。
I changed some of the classes, so here is my code (tables cut down in the interest of space): 我改变了一些类,所以这里是我的代码(为了空间而减少了表格):
//JS FOR RESPONSIVE TABLES
var headertext = [],
headers = document.querySelectorAll(".responsive th"),
tablerows = document.querySelectorAll(".responsive th"),
tablebody = document.querySelector(".responsive tbody");
for(var i = 0; i < headers.length; i++) {
var current = headers[i];
headertext.push(current.textContent.replace(/\r?\n|\r/,""));
}
for (var i = 0, row; row = tablebody.rows[i]; i++) {
for (var j = 0, col; col = row.cells[j]; j++) {
col.setAttribute("data-th", headertext[j]);
}
}
HTML HTML
<table class="responsive mesh">
<thead>
<tr>
<th>Phifer</th>
<th>Openness</th>
<th>Sun/UV</th>
<th>Protection</th>
<th>Sample</th>
</tr>
</thead>
<tbody>
<tr>
<td>18/14 - Charcoal</td>
<td>58%</td>
<td>Up To 40%</td>
<td>Blockage</td>
<td><img src="http://minnesotascreens.cloudaccess.host/wp-content/uploads/2015/03/mesh_1814_charcoal.jpg" alt="mesh_1814_charcoal" class="alignnone size-full wp-image-227" /></td>
</tr>
</tbody>
</table>
<hr/>
<table class="responsive mesh">
<thead>
<tr>
<th>Phifer 20/30</th>
<th>Openness</th>
<th>Sun/UV</th>
<th>Protection</th>
<th>Sample</th>
</tr>
</thead>
<tbody>
<tr>
<td>Charcoal</td>
<td>32%</td>
<td>Up To 65%</td>
<td>Blockage</td>
<td><img src="http://minnesotascreens.cloudaccess.host/wp-content/uploads/2015/03/mesh_2030_charcoal.jpg" alt="mesh_2030_charcoal" class="alignnone size-full wp-image-236" /></td>
</tr>
</tbody>
</table>
My Site: http://minnesotascreens.cloudaccess.host/products/phantom-retractable-door-screens/ 我的网站: http : //minnesotascreens.cloudaccess.host/products/phantom-retractable-door-screens/
You need to iterate all tables, then all rows and cells inside every table. 您需要迭代所有表,然后遍历每个表中的所有行和单元格。 Try something like this:
尝试这样的事情:
var tables = document.querySelectorAll(".responsive"),
tbody, headers, headertext, i, j, k;
for (i = 0; i < tables.length; i++) {
tbody = tables[i].tBodies[0];
headers = tables[i].tHead.rows[0].children;
headertext = [];
for (j = 0; j < headers.length; j++) {
headertext.push(headers[j].textContent.trim());
}
for (j = 0; j < tbody.rows.length; j++) {
for (k = 0; k < tbody.rows[j].cells.length; k++) {
tbody.rows[j].cells[k].setAttribute("data-th", headertext[k]);
}
}
}
Demo: http://jsfiddle.net/6kkb3369/ 演示: http : //jsfiddle.net/6kkb3369/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.