使用来自 Javascript Websocket 的数据将数据添加到同一行的 2 列中
Add data into 2 columns in same row with the data coming from Javascipt Websocket
我是 JavaScript 的新手,不确定这个问题是否非常基本。我使用从外部 WebSocket 获取的数据创建了一个比特币价格更新仪表板。我设法从 WebSocket 获取数据并将其显示在 HTML table 上,但我只能获取比特币的实时价格 我还想在另一列中显示比特币数量.我想知道如何在一行的 2 列中附加两个不同的数据。我尽力解释了。
我提供了下面的代码片段以及我从中提取数据的外部 Websocket。
注意:我正在从外部 websocket 中提取数据,使用该 WebSocket 我可以获得所有详细信息,例如比特币价格、数量、类型和所有内容。 “messageObject.p”表示价格,“messageObject.q”表示数量。 p=价格,q=数量。我能够在 table 上显示 messageObject.q(数量),但我无法在 [=28] 的另一列中显示 messageObject.p(价格) =].
请告诉我如何将行动态插入 HTML table。提前非常感谢
<table id="tableprice" class="table table-striped">
<thead>
<tr>
<th>Amount(BTC)</th>
<th scope="col">Price(USDT)</th>
</tr>
</thead>
<tbody id="pricetable" class="crypt-table-hover">
</tbody>
</table>
<script>
window.onload = () => {
function insertRow(price){
var tr = document.createElement("tr"),
tdCoin = document.createElement("td"),
tdPrice = document.createElement("td"),
docFrag = new DocumentFragment();
tdPrice.style.color="#49C279";
tdCoin.textContent = `${(price.slice(0)).toLocaleString("en-US")}`;
tdPrice.textContent = `${Number(price.slice(0,-6)).toLocaleString("en-US",{style: 'currency', currency: 'USD'})}`;
tr.appendChild(tdCoin);
tr.appendChild(tdPrice);
docFrag.appendChild(tr);
return docFrag;
}
var binanceSocket = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@aggTrade"),
table = document.getElementById("pricetable");
binanceSocket.onmessage = function(event) {
var messageObject = JSON.parse(event.data);
table.appendChild(insertRow(messageObject.q, messageObject.p));
const MAX_ROWS = 16;
const rows = table.querySelectorAll("tr");
if (rows.length > MAX_ROWS) table.removeChild(rows[0]);
}
</script>
您的 insertRow()
函数中只有一个参数。此外,在 insertRow()
函数内部,您永远不会尝试从传入的数量变量中读取。
我发现您为 insertRow 函数发送了两个参数,而在函数中只接收了一个参数并将其附加。
所以我试着像下面这样编辑你的代码
<table id="tableprice" class="table table-striped">
<thead>
<tr>
<th>Amount(BTC)</th>
<th scope="col">Price(USDT)</th>
</tr>
</thead>
<tbody id="pricetable" class="crypt-table-hover"></tbody>
</table>
<script>
window.onload = () => {
function insertRow(numberOfCoins,price){
var tr = document.createElement("tr"),
tdCoin = document.createElement("td"),
tdPrice = document.createElement("td"),
docFrag = new DocumentFragment();
tdPrice.style.color="#49C279";
// tdCoin.textContent = `${(price.slice(0)).toLocaleString("en-US")}`;
tdPrice.textContent = `${Number(price.slice(0,-6)).toLocaleString("en-US",{style: 'currency', currency: 'USD'})}`;
tdCoin.textContent = `${numberOfCoins}`;
tr.appendChild(tdCoin);
tr.appendChild(tdPrice);
docFrag.appendChild(tr);
return docFrag;
}
var binanceSocket = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@aggTrade"),
table = document.getElementById("pricetable");
binanceSocket.onmessage = function(event) {
var messageObject = JSON.parse(event.data);
table.appendChild(insertRow(messageObject.q, messageObject.p));
const MAX_ROWS = 16;
const rows = table.querySelectorAll("tr");
if (rows.length > MAX_ROWS) table.removeChild(rows[0]);
}
}
</script>
我是 JavaScript 的新手,不确定这个问题是否非常基本。我使用从外部 WebSocket 获取的数据创建了一个比特币价格更新仪表板。我设法从 WebSocket 获取数据并将其显示在 HTML table 上,但我只能获取比特币的实时价格 我还想在另一列中显示比特币数量.我想知道如何在一行的 2 列中附加两个不同的数据。我尽力解释了。
我提供了下面的代码片段以及我从中提取数据的外部 Websocket。
注意:我正在从外部 websocket 中提取数据,使用该 WebSocket 我可以获得所有详细信息,例如比特币价格、数量、类型和所有内容。 “messageObject.p”表示价格,“messageObject.q”表示数量。 p=价格,q=数量。我能够在 table 上显示 messageObject.q(数量),但我无法在 [=28] 的另一列中显示 messageObject.p(价格) =].
请告诉我如何将行动态插入 HTML table。提前非常感谢
<table id="tableprice" class="table table-striped">
<thead>
<tr>
<th>Amount(BTC)</th>
<th scope="col">Price(USDT)</th>
</tr>
</thead>
<tbody id="pricetable" class="crypt-table-hover">
</tbody>
</table>
<script>
window.onload = () => {
function insertRow(price){
var tr = document.createElement("tr"),
tdCoin = document.createElement("td"),
tdPrice = document.createElement("td"),
docFrag = new DocumentFragment();
tdPrice.style.color="#49C279";
tdCoin.textContent = `${(price.slice(0)).toLocaleString("en-US")}`;
tdPrice.textContent = `${Number(price.slice(0,-6)).toLocaleString("en-US",{style: 'currency', currency: 'USD'})}`;
tr.appendChild(tdCoin);
tr.appendChild(tdPrice);
docFrag.appendChild(tr);
return docFrag;
}
var binanceSocket = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@aggTrade"),
table = document.getElementById("pricetable");
binanceSocket.onmessage = function(event) {
var messageObject = JSON.parse(event.data);
table.appendChild(insertRow(messageObject.q, messageObject.p));
const MAX_ROWS = 16;
const rows = table.querySelectorAll("tr");
if (rows.length > MAX_ROWS) table.removeChild(rows[0]);
}
</script>
您的 insertRow()
函数中只有一个参数。此外,在 insertRow()
函数内部,您永远不会尝试从传入的数量变量中读取。
我发现您为 insertRow 函数发送了两个参数,而在函数中只接收了一个参数并将其附加。 所以我试着像下面这样编辑你的代码
<table id="tableprice" class="table table-striped">
<thead>
<tr>
<th>Amount(BTC)</th>
<th scope="col">Price(USDT)</th>
</tr>
</thead>
<tbody id="pricetable" class="crypt-table-hover"></tbody>
</table>
<script>
window.onload = () => {
function insertRow(numberOfCoins,price){
var tr = document.createElement("tr"),
tdCoin = document.createElement("td"),
tdPrice = document.createElement("td"),
docFrag = new DocumentFragment();
tdPrice.style.color="#49C279";
// tdCoin.textContent = `${(price.slice(0)).toLocaleString("en-US")}`;
tdPrice.textContent = `${Number(price.slice(0,-6)).toLocaleString("en-US",{style: 'currency', currency: 'USD'})}`;
tdCoin.textContent = `${numberOfCoins}`;
tr.appendChild(tdCoin);
tr.appendChild(tdPrice);
docFrag.appendChild(tr);
return docFrag;
}
var binanceSocket = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@aggTrade"),
table = document.getElementById("pricetable");
binanceSocket.onmessage = function(event) {
var messageObject = JSON.parse(event.data);
table.appendChild(insertRow(messageObject.q, messageObject.p));
const MAX_ROWS = 16;
const rows = table.querySelectorAll("tr");
if (rows.length > MAX_ROWS) table.removeChild(rows[0]);
}
}
</script>