使用纯JavaScript获取HTML表中特定单元格的值
我有一个React应用程序,它通过HTTP请求获取一些数据。响应内容包含一个格式化的HTML表,如下所示:使用纯JavaScript获取HTML表中特定单元格的值,javascript,html,reactjs,html-parsing,Javascript,Html,Reactjs,Html Parsing,我有一个React应用程序,它通过HTTP请求获取一些数据。响应内容包含一个格式化的HTML表,如下所示: <html> <head> <title>Geoserver GetFeatureInfo output</title> </head> <style type="text/css"> table.featureInfo, table.featureInfo td, table.featur
<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>
我需要纯JavaScript代码,将第二个元素的值存储到名为“id”的变量中response变量包含上面显示的原始HTML,我需要的id始终是第二个元素
编辑:我需要解析在响应参数中传递的文本。文本包含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"
到目前为止你们都做了些什么?可能是@Maxime Girou的重复,什么都并没有,但我只需要以某种方式将第二个元素的值提取到第二个块中变量缺失的代码部分。第一个代码块是'response'参数的内容。谢谢,这很接近,但该表并没有呈现在文档中的任何位置,它作为原始文本包含在getId方法的'response'变量参数中。我需要解析文本,而不是HTML元素。好的,你可以用这个,var HTML=document.createElement'text'将文本解析为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"