使用Jquery从HTML表中获取数据(或其他可能的方式)

时间:2019-04-12 12:44:04

标签: javascript jquery html

我有一个非常大的HTML表,其数据格式如下(表的简化版):

https://pastebin.com/K5UB4cGB

列表更大。

我需要知道哪个应用程序在哪个服务器(多个)上运行。

我现在需要以某种方式获取所有数据并将其存储(也许存储在数组中),以便可以使用它。 (例如,我需要比较某些应用程序并编写代码来对其进行记录。)

我已经尝试了很多在网络上找到的方法,但是我不确定即时通讯方式是否正确。

我最近的尝试是:

var data = Array();

$("table").each(function(i, v) {
  data[i] = Array();
  $(this).each(function(ii, vv) {
    data[i][ii] = $(this).text();
  });
})

document.write(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table">
  <tr>
    <th>1</th>
    <th>2</th>
    <th>3</th>
  </tr>
  <tr>
    <td>4</td>
    <td>5</td>
    <td>6</td>
  </tr>
  <tr>
    <td>7</td>
    <td>8</td>
    <td>9</td>
  </tr>
</table>


<div id="result" style="color: #f00"></div>

输出:

1 2 3 4 6 7 8 9 10 

使用这种方法,我得到一个数组:

1,2,3,4,5,6,7,8,9,10

但是我无法访问存储的值,因为例如data [0]输出所有值,而不仅仅是一个值。

对不起,长文本

感谢您的帮助:)

亲切的问候, 马库斯

4 个答案:

答案 0 :(得分:1)

您可以尝试使用嵌套的for循环并获取嵌套的数据数组。

let data = [];

$("table tr").each(function() {
  let row = [];
  $(this).children("td").each(function() {
    row.push($(this).text());
  })
  data.push(row);
})

console.log(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table id="table">
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
  </tr>
  <tr>
    <td>4</td>
    <td>6</td>
    <td>7</td>
  </tr>
  <tr>
    <td>8</td>
    <td>9</td>
    <td>10</td>
  </tr>
</table>

答案 1 :(得分:0)

使用each遍历td并获取其文本值

var val=[]
$('#table td').each(function(e){
val.push($(this).text())
})
console.log(val)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<table id="table">
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>4</td>
      <td>6</td>
      <td>7</td>
    </tr>
    <tr>
        <td>8</td>
        <td>9</td>
        <td>10</td>
      </tr>
</table>

答案 2 :(得分:0)

您需要迭代行,并且在行内迭代单元格

您可以使用map()

完成所有操作

var data = $('tr').map(function() {
  return [$(this).children().map(function() {
    return $(this).text().trim()
  }).get()];
}).get();



console.log(JSON.stringify(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table">
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
  </tr>
  <tr>
    <td>4</td>
    <td>6</td>
    <td>7</td>
  </tr>
  <tr>
    <td>8</td>
    <td>9</td>
    <td>10</td>
  </tr>
</table>


<div id="result" style="color: #f00"></div>

答案 3 :(得分:0)

在下面,我使用每个函数来导出表的数据,然后将其推入数组列表中。我希望这段代码对您有所帮助。这段代码真的很小。

var arr = [];
$("th, td").each(function(){
  arr.push($(this).text());
  $("#result").text(arr);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table">
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
  </tr>
  <tr>
    <td>4</td>
    <td>6</td>
    <td>7</td>
  </tr>
  <tr>
    <td>8</td>
    <td>9</td>
    <td>10</td>
  </tr>
</table>


<div id="result" style="color: #f00"></div>