javascript - 使用 JavaScript 获取数据和标记 html 表的最有效方法
问题描述
我想用 html 表记录股票价格。
数据来自其他 REST API 服务器,我将每 2 秒获取一次此数据。
并且数据将在 HTML 表格上注明,价格单元也将每 2 秒更新一次。
我编码并且效果很好,但是我对这个 DOM 操作有疑问。(似乎不经济)
我的代码如下所示:
- 来自 REST API 服务器的 JSON 响应将如下所示:
[
{"ticker": "stack", "price": "$3.4"},
{"ticker": "over", "price": "$5.2"},
{"ticker": "flow", "price": "$6.4"}
]
- HTML 表格如下所示:
<table>
<tr>
<th>TICKER</th>
<th>PRICE</th>
</tr>
<tr>
<td>STACK</td>
<td id="stackPrice">$3.4</td>
</tr>
<tr>
<td>OVER</td>
<td id="overPrice">$5.2</td>
</tr>
<tr>
<td>FLOW</td>
<td id="flowPrice">$6.4</td>
</tr>
</table>
股票代码 | 价格 |
---|---|
堆 | 3.4 美元 |
超过 | 5.2 美元 |
流动 | 6.4 美元 |
- 在这种情况下,我的 JavaScript 代码如下所示。
function fetchAndNotateData(){
fetch(apiURL, {
method: "GET",
})
.then((res) => {
return res.json();
})
.then((data) => {
data.forEach(element => {
document.getElementById(`${element.ticker}Price`).innerText = element.price; // seems inefficient
});
setTimeout(fetchAndNotateData,2000);
})
.catch((err) => {
console.log(err);
});
}
在实践中,甚至还有 100 多个代码需要标注。
所以会有很多 DOM 操作(例如document.getElementById)。
并且在每个表格价格单元格上提供 id 似乎没有那么有效。
还有其他更有效的获取数据和标注表格的方法吗?(也许我需要服务器端渲染?)
解决方案
删除不包括标题的表格内容,例如
<table>
<tr>
<th>TICKER</th>
<th>PRICE</th>
</tr>
</table>
并将您的 ajax 更改为此。确保您已导入 jQuery
data.forEach(element => {
$( "table" ).append( '<tr><td>'+element.ticker+'</td><td>'+element.price+'</td></tr>' );
});
推荐阅读
- sum - prometheus sum after rate 功能背后的逻辑是什么?
- apache-kafka - Kafka Stream 只消费 N 条消息
- javascript - 使用 JS 使用正则表达式创建数字仍然创建重复数字
- r - 如何读取文件夹中的 .xlsm 文件,该文件夹使用 R 存在于不同文件夹中
- linux - Modbus RTU 到 Raspberry Pi/Linux 到 Modbus TCP
- javascript - 如何在 ReactJS 中定位 DOM 元素?
- python - 使用 Pandas 与 CSV 读取器/写入器处理和保存大型 CSV 文件
- excel - 在 Microsoft Excel 中单击按钮时如何在单元格中播放音频文件 (.Mp3)
- javascript - 在 jQuery 中切换 HTML 按钮时,时间戳不会随活动日期时间更新?
- java - 从 America/New_York 到 UTC 的时区转换错误