伙計們遇到了一個應(yīng)該很容易的問題,但似乎沒有任何工作正常,我有一個簡單的網(wǎng)站,我正在嘗試注冊一個表行的點擊。內(nèi)容是從 Javascript 動態(tài)生成的,并從 firebase 獲?。?nbsp; var tableRow = document.createElement('tr'); var tableData = document.createElement('td'); tableData.addEventListener("click", draftRider(doc.data().name)) tableData.innerHTML = "<p class='test'> click me </p>" tableRow.appendChild(tableData); document.getElementById("draftingStartBlock").appendChild(tableRow);我嘗試過轉(zhuǎn)義字符串、onclick 事件,現(xiàn)在添加事件偵聽器。此外,當(dāng)頁面首次加載時,該函數(shù)似乎會觸發(fā)。這是我想在單擊時調(diào)用的函數(shù): function draftRider(riderName) { showSnackBar(riderName) if (playersTurn) { var riderQuery = firebase.firestore().collection("leagues").doc(userLeagueId).collection("rider_list") riderQuery.get().then(function (doc) { if (doc.exists) { var currentRiderName = doc.data().rider_name; var draftedBy = doc.data().drafted_by; if (riderName === currentRiderName && draftedBy === "") { database.collection("leagues") .doc(userLeagueId) .collection("rider_list") .doc(doc.id) .update("Drafted_By", userId) setNextPlayerAsPickingPlayer() } } else { // doc.data() will be undefined in this case console.log("No such document!"); } }).catch(function (error) { console.log("Error getting document:", error); }); } else { showSnackBar("Its currently not your turn"); } }
1 回答

qq_花開花謝_0
TA貢獻1835條經(jīng)驗 獲得超7個贊
您的代碼中的這一行就是問題所在:
tableData.addEventListener("click", draftRider(doc.data().name))
addEventListener
是一個函數(shù),它期望事件類型作為第一個參數(shù),函數(shù)作為第二個參數(shù)。在您的情況下,您沒有將函數(shù)作為第二個參數(shù)傳遞,您實際上是在調(diào)用該函數(shù)并將其返回的值(在本例中為未定義)作為第二個參數(shù)傳遞。這就是為什么您會看到頁面加載時調(diào)用一次函數(shù)。
根據(jù)您帖子中的代碼,您可以通過以下方式解決:
tableData.addEventListener("click", function() { draftRider(doc.data().name)})
- 1 回答
- 0 關(guān)注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消