3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
您不需要表單來(lái)獲取數(shù)據(jù)。我的建議:
getData.onclick = () => {
fetch('https://www.alphavantage.co/query?function=EARNINGS&symbol=IBM&apikey=demo')
.then(res => res.text())
.then((out) => {
let jsonData = JSON.parse(out);
for (let i = 0; i < jsonData.quarterlyEarnings.length; i++) {
let earnings = jsonData.quarterlyEarnings[i];
myData.innerHTML +=
"<tr><td>" + earnings.reportedDate + "</td>" +
"<td align='right'>" + earnings.reportedEPS + "</td>" +
"<td align='right'>" + earnings.estimatedEPS + "</td>" +
"<td align='right'>" + earnings.surprise + "</td></tr>";
};
})
.catch(err => console.error(err));
}
<button type="button" id="getData">Get data</button>
<table>
<thead>
<tr>
<th>Reported Date</th>
<th>Reported EPS</th>
<th>Estimated EPS</th>
<th>Surprise</th>
</tr>
</thead>
<tbody id="myData">
<tbody>
</table>

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)您單擊標(biāo)簽中的按鈕時(shí),您的頁(yè)面將刷新,您應(yīng)該像這樣避免這種情況
const getEarnings = (e) => {
// prevent browser from refreshing
e.preventDefault()
fetch()
}

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
一些東西:
使用“onclick”而不是“onClick”(參見(jiàn)底部的注釋?zhuān)?/p>
在引號(hào)內(nèi)設(shè)置對(duì) HTML 屬性的調(diào)用,如下所示:
onClick="getEarnings();"
停止事件傳播,因?yàn)槟陌粹o是提交類(lèi)型并將強(qiáng)制頁(yè)面重新加載。這可以通過(guò)幾種方式完成:
您可以將按鈕類(lèi)型設(shè)置為“按鈕”而不是“提交”,因?yàn)楹笳邥?huì)強(qiáng)制頁(yè)面重新加載。
您可以將事件接受到函數(shù)中,然后停止事件繼續(xù),如下所示:
function getEarnings (e) {
// This will stop a submit button from reloading the page
e.preventDefault();
// Logic here
}
理想情況下,您應(yīng)該將此邏輯完全放在腳本中,其中您的按鈕具有唯一的id,您可以在 DOM 加載時(shí)定位并在其上設(shè)置事件偵聽(tīng)器。這樣您就可以將所有這些移動(dòng)到一個(gè)單獨(dú)的文件中,并將表示和邏輯分開(kāi)。在我的腦海中,它會(huì)是這樣的:
window.addEventListener('DOMContentLoaded', function () {
const submit = document.getElementById('Submit');
submit.addEventListener('click', function (e) {
e.preventDefault();
// run logic
});
});
筆記:
關(guān)于#1,使用小寫(xiě)字母是一個(gè)好習(xí)慣,因?yàn)樵?JS 中
onClick
不會(huì)以相同的方式工作:onclick 或 onClick?如果您需要舊版瀏覽器支持,您應(yīng)該注意單擊事件的一些奇怪之處:addEventListener 與 onclick
添加回答
舉報(bào)