使用纯Javascript将所有页面<table>附加到相应的<div>

雨果

我的网站上有很多帖子,<table>并且有一个新的响应式布局。

当在移动设备上打开大表元素(大量内容)时,即使使用max-width:100%或其他CSS技巧,它们也会变得比屏幕大。

解决的办法是在溢出 表中追加表:scroll<div>,但是我不能编辑所有的帖子内容,所以我想用纯Javascript做到这一点。不允许使用jQuery

目标是:

  1. 获取<table>页面内的所有元素#post
  2. 获取他们的内容
  3. 附加在这些内容<div class="table_div">在同一个地方,该<table>
  4. 删除旧table元素(不在内部的元素.table_div

我已经可以从表元素的所有内容,并删除该表,但该部分代码按说应该追加表内容.table_div不起作用。

到目前为止,我的代码的一部分:

    var post = document.getElementById('post'),
    tables = post.getElementsByTagName('table');

for(var i=0; i<tables.length; i++) {
    var table = tables[i];

    var table_content = table.innerHTML,
        table_div = document.createElement('div');

    tables.remove();

    table_div.appendChild(table);
    table_div.className = 'table_div';
    document.appendChild(table_div);
}

完整代码:http//jsfiddle.net/hmaesta/6mambr93/

请使用纯Javascript帮助。谢谢你。

tetsurom

NodeList有两种模式:静态实时(请参阅NodeList何时实时且何时静态?)。实时表示DOM中的更改反映在NodeList中。来自的NodeListgetElementsByTagName是实时的。在您的代码中,tables每次删除的长度都会减少#post table

有一些方法可以解决问题。

  1. 使用静态NodeList。例如,querySelectorAll返回静态一个。
  2. 将NodeList映射到数组。您可以使用var ts = []; Array.prototype.push.apply(ts, tables);然后,使用ts代替tables
  3. 保持NodeList的长度和顺序。使用insertChild,而不是appendChild维持秩序,并保持<table>#post

这是例子。

var tables = document.querySelectorAll('#post table');
for(var i = 0; i < tables.length; i++) {
    var table = tables[i];
    var table_div = document.createElement('div');
    table.parentElement.insertBefore(table_div, table);
    table_div.className = 'table_div';
    table_div.appendChild(table);
}

https://jsfiddle.net/boy48ngs/2/

注意:<table>在这种情况下,您不需要手动删除元素不能有多个父元素,并且不能appendChild从当前父元素中删除该元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将div内联附加到table thead th元素

来自分类Dev

将表格附加到div

来自分类Dev

将div附加到图像

来自分类Dev

将CSS附加到div

来自分类Dev

Javascript:将文本附加到div吗?

来自分类Dev

用jQuery将JavaScript附加到div

来自分类Dev

javascript将元素附加到div中

来自分类Dev

Javascript - 将 <script></script> 附加到 Div

来自分类Dev

使用 jquery 将数据附加到 div

来自分类Dev

将答案(li标签)附加到相应的Questio(ul标签)

来自分类Dev

jQuery将数组中的数据附加到相应的索引元素

来自分类Dev

将div附加到div以创建div网格

来自分类Dev

使用JavaScript函数将复杂HTML附加到div吗?

来自分类Dev

使用Javascript将内容附加到div无法正常工作

来自分类Dev

使用javascript将div附加到类名

来自分类Dev

将div附加到页面会导致整个页面跳转

来自分类Dev

无法将数据附加到div

来自分类Dev

将div附加到所选文本

来自分类Dev

将div或span附加到下拉列表

来自分类Dev

无法将表格附加到div

来自分类Dev

如何将元素附加到div?

来自分类Dev

无法将数据附加到div

来自分类Dev

无法将高库存附加到div

来自分类Dev

将HTML附加到论坛中的DIV

来自分类Dev

无法将图片附加到div

来自分类Dev

将数据从div附加到链接网址

来自分类Dev

将多个项目附加到Div

来自分类Dev

将多个值附加到单个 div

来自分类Dev

无法将节点附加到空 div