使用纯 JavaScript 获取 HTML table 中特定单元格的值
Get value of a specific cell in HTML table with pure JavaScript
我有一个使用 HTTP 请求获取一些数据的 React 应用程序。响应内容包含格式化的 HTML table 并且看起来像这样:
<html>
<head>
<title>Geoserver GetFeatureInfo output</title>
</head>
<style type="text/css">
table.featureInfo, table.featureInfo td, table.featureInfo th {
border:1px solid #ddd;
border-collapse:collapse;
margin:0;
padding:0;
font-size: 90%;
padding:.2em .1em;
}
table.featureInfo th {
padding:.2em .2em;
font-weight:bold;
background:#eee;
}
table.featureInfo td{
background:#fff;
}
table.featureInfo tr.odd td{
background:#eee;
}
table.featureInfo caption{
text-align:left;
font-size:100%;
font-weight:bold;
padding:.2em .2em;
}
</style>
<body>
<table class="featureInfo">
<caption class="featureInfo">v_zgrada_gs</caption>
<tr>
<th>fid</th>
<th >id</th>
<th >parcela_id</th>
<th >kc_broj</th>
<th >ko_id</th>
<th >ko</th>
<th >zk_ulozak</th>
<th >vrsta_id</th>
<th >vrsta_zgrade</th>
<th >izvor</th>
<th >etaziranost</th>
<th >uskladjeno</th>
<th >kbr</th>
<th >opis</th>
<th >broj_katova</th>
<th >povrsina_sluzbena</th>
<th >povrsina</th>
<th >godina_izgradnje</th>
<th >izvor_podataka_id</th>
<th >nedovrseno</th>
</tr>
<tr>
<td>v_zgrada_gs.fid-752e8cc0_16cf6d070ba_-7146</td>
<td>1165</td>
<td>10642</td>
<td>1002/7</td>
<td>3</td>
<td>Novalja</td>
<td>417</td>
<td>2</td>
<td>kuća</td>
<td>DKP</td>
<td>false</td>
<td>false</td>
<td></td>
<td></td>
<td>2.0</td>
<td></td>
<td>110.8</td>
<td></td>
<td>2</td>
<td>false</td>
</tr>
</table>
<br/>
</body>
</html>
我有一个组件使用一种方法从响应中提取一个值。我需要的值是 table (<td>1165</td>
) 中的第二个 <td>
元素。
该方法如下所示:
getId = (response) => {
/*
Missing code here
*/
return id;
}
我需要将第二个 <td>
元素的值存储到名为 'id' 的变量的纯 JavaScript 代码。 'response' 变量包含上面显示的原始 HTML,我需要的 id 始终是第二个 <td>
元素。
编辑: 我需要解析在响应参数中传递的文本。文本包含 HTML 代码,但未在页面的任何位置呈现。
我不知道我是否理解你的问题,但你可以使用下面的代码获取值。
var id = document.getElementsByTagName('tr')[1].getElementsByTagName('td')[2].innerText
您可以使用正则表达式从 HTML 响应中提取第二个值。
var pattern = /<td>.*?<\/td>.*?<td>(.*?)<\/td>/s; // flag s = dot matches new line
var m = response.match(pattern);
console.log(m[1]); // prints "1165"
我有一个使用 HTTP 请求获取一些数据的 React 应用程序。响应内容包含格式化的 HTML table 并且看起来像这样:
<html>
<head>
<title>Geoserver GetFeatureInfo output</title>
</head>
<style type="text/css">
table.featureInfo, table.featureInfo td, table.featureInfo th {
border:1px solid #ddd;
border-collapse:collapse;
margin:0;
padding:0;
font-size: 90%;
padding:.2em .1em;
}
table.featureInfo th {
padding:.2em .2em;
font-weight:bold;
background:#eee;
}
table.featureInfo td{
background:#fff;
}
table.featureInfo tr.odd td{
background:#eee;
}
table.featureInfo caption{
text-align:left;
font-size:100%;
font-weight:bold;
padding:.2em .2em;
}
</style>
<body>
<table class="featureInfo">
<caption class="featureInfo">v_zgrada_gs</caption>
<tr>
<th>fid</th>
<th >id</th>
<th >parcela_id</th>
<th >kc_broj</th>
<th >ko_id</th>
<th >ko</th>
<th >zk_ulozak</th>
<th >vrsta_id</th>
<th >vrsta_zgrade</th>
<th >izvor</th>
<th >etaziranost</th>
<th >uskladjeno</th>
<th >kbr</th>
<th >opis</th>
<th >broj_katova</th>
<th >povrsina_sluzbena</th>
<th >povrsina</th>
<th >godina_izgradnje</th>
<th >izvor_podataka_id</th>
<th >nedovrseno</th>
</tr>
<tr>
<td>v_zgrada_gs.fid-752e8cc0_16cf6d070ba_-7146</td>
<td>1165</td>
<td>10642</td>
<td>1002/7</td>
<td>3</td>
<td>Novalja</td>
<td>417</td>
<td>2</td>
<td>kuća</td>
<td>DKP</td>
<td>false</td>
<td>false</td>
<td></td>
<td></td>
<td>2.0</td>
<td></td>
<td>110.8</td>
<td></td>
<td>2</td>
<td>false</td>
</tr>
</table>
<br/>
</body>
</html>
我有一个组件使用一种方法从响应中提取一个值。我需要的值是 table (<td>1165</td>
) 中的第二个 <td>
元素。
该方法如下所示:
getId = (response) => {
/*
Missing code here
*/
return id;
}
我需要将第二个 <td>
元素的值存储到名为 'id' 的变量的纯 JavaScript 代码。 'response' 变量包含上面显示的原始 HTML,我需要的 id 始终是第二个 <td>
元素。
编辑: 我需要解析在响应参数中传递的文本。文本包含 HTML 代码,但未在页面的任何位置呈现。
我不知道我是否理解你的问题,但你可以使用下面的代码获取值。
var id = document.getElementsByTagName('tr')[1].getElementsByTagName('td')[2].innerText
您可以使用正则表达式从 HTML 响应中提取第二个值。
var pattern = /<td>.*?<\/td>.*?<td>(.*?)<\/td>/s; // flag s = dot matches new line
var m = response.match(pattern);
console.log(m[1]); // prints "1165"