[英]Uncaught ReferenceError: doIt is not defined at HTMLDivElement.onclick
[英]is not defined at HTMLDivElement.onclick
剛開始時,我已經在這里尋找類似的問題,但是這些問題都沒有使我朝着正確的方向發展。 無論如何,我遇到一個問題,當我在登錄名上單擊一個對象時,它沒有發送我在下面提供的代碼的selectPlayer
函數。
function RenderFullAvatarCards(LoginData)
{
var avatarNumber = 0;
$("#externalSystem").html('<center><div id="avatarCards" class="clickCard" style="margin-top:30px;"></div><br><div class="shadow"></div><div class="login-different" id="changePenguin">Change Penguin</div></center>');
for (var i in LoginData['Accounts']) {
$("#avatarCards").append('<div id="avatarCard_' + avatarNumber + '" onclick="selectPlayer(' + i + ', ' + avatarNumber + ');" class="playerSelect"><div id="penguin" style="background:url(//localhost/play/assets/img/doll.png) no-repeat;position:relative;top:66px;width:144px;height:250px;"></div><span id="penguinName">' + LoginData['Accounts'][i][0] + '</span></div>');
avatarNumber++;
};
$("#changePenguin").on('click', function() {
renderNewPlayer(true);
});
}
我收到的實際錯誤是這樣的
(index):1 Uncaught ReferenceError: Reed is not defined
at HTMLDivElement.onclick ((index):1)
指的是我的索引的開頭
<!DOCTYPE html>
任何想法可能是什么問題?
如果我不得不猜測(之所以這樣做,是因為您沒有提供足夠的信息), LoginData
對象看起來就像
{
Accounts: {
Reed: ['Happy Feet']
}
}
這里的問題是,因為i
將是“ Reed”值,所以您的內聯onclick
屬性看起來像
onclick="selectPlayer(Reed, 0)"
由於未引用Reed
,因此JavaScript正在尋找該名稱的變量,因此...
未捕獲的ReferenceError:未定義Reed
快速又骯臟的解決方案...添加引號
onclick="selectPlayer(\'' + i + '\', ' + avatarNumber + ')
更好的解決方案是向您的元素添加一些數據/屬性,並使用委托的事件偵聽器來處理單擊。 例如
$(document).on('click', '.playerSelect', function() {
let player = $(this)
selectPlayer(player.data('account'), player.data('avatar-number'))
})
並在您的RenderFullAvatarCards
函數中...
var avatarCards = Object.keys(LoginData.Accounts).map((account, avatarNumber) => {
return $('<div></div>')
.attr('id', 'avatarCard_' + avatarNumber)
.data('account', account)
.data('avatar-number', avatarNumber)
.addClass('playerSelect')
.append(...) // add span elements, etc
})
$("#avatarCards").append(avatarCards)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.