为什么我不能选择整张桌子?

时间:2012-09-17 11:43:27

标签: jquery html css

我正在尝试使用名为DocRaptor的程序将一些表格数据从HTML页面导出到Excel。我正在使用PHP使用他们的API传递数据,然后将数据转换为Excel电子表格。

但我似乎无法通过整个表格(包括开场<table>和关闭</table>代码。

比如说我在HTML中有以下表格:

<table id="placement-table">
    <tr id="row">
    <td id="cell">Text1</td>
    </tr>
<tr id="row1">
    <td id="cell">Text2</td>
    </tr>
<tr id="row2">
    <td id="cell">Text3</td>
    </tr>
<tr id="row3">
    <td id="cell">Text4</td>
    </tr>
</table>

现在,例如,如果我使用console.log($('#placement-table').html());,我只得到以下输出:

<tbody><tr id="row">
    <td id="cell">Text1</td>
    </tr>
    <tr id="row1">
    <td id="cell">Text2</td>
    </tr><tr id="row2">
    <td id="cell">Text3</td>
    </tr><tr id="row3">
    <td id="cell">Text4</td>
    </tr>
</tbody>

为什么我错过了实际的开始和结束<table></table>标签?是因为.html()只给出了给定元素内的内容吗?我意识到我只是将信息记录到控制台,但我只是这样做,所以我可以看到传递了什么,因此我注意到它缺少这些标签。

希望这是有道理的,如果不是,我可以更新问题!

4 个答案:

答案 0 :(得分:3)

您可以使用outerHTML

$('#placement-table')[0].outerHTML

或:

var table = document.getElementById('placement-table').outerHTML

http://jsfiddle.net/eQRL3/

答案 1 :(得分:1)

来自Get selected element's outer HTML

(function($) {
  $.fn.outerHTML = function() {
    return $(this).clone().wrap('<div></div>').parent().html();
  }
})(jQuery);

console.log($('#placement-table').outerHTML());    // <table>...</table>

答案 2 :(得分:0)

正确; html()获取您提供的元素的内容,而不是容器本身。最简单的解决方案是添加一个包装器div ...

答案 3 :(得分:0)

方法html获取元素的innerHTML。你应该使用类似outerHTML的东西,在jQuery中可以按如下方式完成:

var table = $("#placement-table").clone().wrap("<div />").parent().html();
console.log(table);