[英]Javascript function throwing errors
首先,我一點也不精通JavaScript。 我已經將此函數加在一起,以獲取一些統計信息,並使用JSON將它們作為html字符串應用於相關元素。 有時它起作用,有時卻不起作用。
AFAIK,該功能應在執行任何操作之前等待3s,然后每隔2s重復一次此功能(對嗎?)。
var userGameStats = setTimeout(function () {
$.getJSON('/id/stats', function (data) {
// Pull the stats
var userWinningBets = data.winningBets,
userLosingBets = data.losingBets,
userTotalBets = data.totalBets,
userStreak = data.streak,
userBestStreak = data.bestStreak;
// Apply stats to elements
$('#stats_won span').text(userWinningBets);
$('#stats_lost span').text(userLosingBets);
$('#stats_total span').text(userTotalBets);
$('#stats_ratio span').text((userTotalBets > 0) ? ((userWinningBets / userTotalBets) * 100).toFixed(1) + '%' : "0%");
$('#stats_streakbest span').text(userBestStreak);
$('#stats_streak span').text(userStreak);
});
userGameStats();
setInterval(userGameStats, 2000);
}, 3000);
我收到此錯誤(在控制台中):
Uncaught TypeError: Property 'userGameStats' of object [object Object] is not a function
(anonymous function)
我該如何解決? 有沒有一種更好,更正確的方式可以格式化語法?
在您的情況下, userGameStats
是setTimeout()
返回的值,該值是對創建的計時器的引用(一個int值),這就是錯誤的原因。
它應該是
var userGameStats = function () {
$.getJSON('/id/stats', function (data) {
// Pull the stats
var userWinningBets = data.winningBets,
userLosingBets = data.losingBets,
userTotalBets = data.totalBets,
userStreak = data.streak,
userBestStreak = data.bestStreak;
// Apply stats to elements
$('#stats_won span').text(userWinningBets);
$('#stats_lost span').text(userLosingBets);
$('#stats_total span').text(userTotalBets);
$('#stats_ratio span').text((userTotalBets > 0) ? ((userWinningBets / userTotalBets) * 100).toFixed(1) + '%' : "0%");
$('#stats_streakbest span').text(userBestStreak);
$('#stats_streak span').text(userStreak);
});
}
setTimeout(function(){
userGameStats();
setInterval(userGameStats, 2000);// once started repeat every 2 seconds
}, 3000); //first time wait for 3 seconds
您可以在初始setTimeout內為函數分配名稱。 然后,您可以在函數內部的新setTimeout中引用此函數。
setTimeout( function userGameStats() {
$.getJSON('/id/stats', function (data) {
// Pull the stats
var userWinningBets = data.winningBets,
userLosingBets = data.losingBets,
userTotalBets = data.totalBets,
userStreak = data.streak,
userBestStreak = data.bestStreak;
// Apply stats to elements
$('#stats_won span').text(userWinningBets);
$('#stats_lost span').text(userLosingBets);
$('#stats_total span').text(userTotalBets);
$('#stats_ratio span').text((userTotalBets > 0) ? ((userWinningBets / userTotalBets) * 100).toFixed(1) + '%' : "0%");
$('#stats_streakbest span').text(userBestStreak);
$('#stats_streak span').text(userStreak);
});
setTimeout( userGameStats , 2000 );
}, 3000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.