我正在選擇完全用HTML和Javascript編寫的冒險遊戲;我想完全用Javascript創建大部分元素來創建一個真棒動態遊戲!我無法使用事件和事件偵聽器。這是一個神祕的遊戲;玩家從列表中選擇角色後,可邀請5位嘉賓參加派對。其中一名客人遇難,讓您與三名嫌疑人解開謎團。在Javascript中創建和調用事件
當您選擇了播放器之後,還有另一個按鈕「選擇此字符!」。點擊此按鈕時,播放器創建用戶界面應被隱藏,並且可以看到新的用戶界面。使用現在的代碼,「StartGame」函數完全被跳過。我究竟做錯了什麼?你可以給任何幫助將是非常真棒,非常感謝!
btnPlayer = document.createElement('button');
btnPlayer.id = 'BTN_btnPlayer';
btnPlayer.type = 'button';
btnPlayer.addEventListener('click', welcomePlayer(), true);
btnPlayer.onclick = welcomePlayer();
btnPlayer.innerHTML = 'Select This Character!';
myDiv.appendChild(btnPlayer);
編輯 我修改按鈕事件屬性看起來像這樣:
btnPlayer.addEventListener('click', welcomePlayer, true);
//btnPlayer.onclick = welcomePlayer;
一個被註釋掉了,因爲他們都沒有工作。我也試着清理我的緩存。這裏是我的StartGame()函數,排除了按鈕代碼。我將不包含用於在我的下拉列表中創建選項的「charFirstNames []」和「charLastNames []」。我把他們分開,以便講一個更有趣的故事;他們最終會在我得到錯誤和基本知識後得到數據庫記錄。我不認爲我在這裏搞砸了什麼,但是我有可能做到了嗎?該功能由編碼到HTML中的唯一按鈕調用。
function startGame(divName) {
myDiv = document.getElementById('story');
lblPlayer = document.createElement('label');
lblPlayer.id = 'LBL_Player';
lblPlayer.htmlFor = 'DDL_PlayerChar';
lblPlayer.innerHTML = 'Please select a character. ';
myDiv.appendChild(lblPlayer);
ddlPlayer = document.createElement('select');
ddlPlayer.id = 'DDL_PlayerChar';
myDiv.appendChild(ddlPlayer);
defOpt = document.createElement("option");
defOpt.value = 0;
defOpt.text = 'Select...';
ddlPlayer.appendChild(defOpt);
//Create and append the options
for (var i = 0; i < charFirstNames.length; i++) {
var option = document.createElement("option");
option.value = charFirstNames[i]+'_'+charLastNames[i];
option.text = charFirstNames[i]+' '+charLastNames[i];
ddlPlayer.appendChild(option);
}
document.getElementById('BTN_Start').hidden = true;
}
的welcomePlayer()函數類似於startgame()函數,創建界面邀請的第一個 「客人」,並刪除玩家創建UI。
什麼 「StartGame」 功能? – andrew
'btnPlayer.addEventListener('click',welcomePlayer(),true);'應該是'btnPlayer.addEventListener('click',welcomePlayer,true);'不帶()。當你添加圓括號時,函數會立即被喚起,而不是等待t甚至觸發它。您還將通過事件監聽器添加事件2x,並通過「onclick」(一次不會再有()函數立即調用該函數)添加一次。選擇一種方法並堅持下去。 – scrappedcola
@scrappedcola雖然我高度懷疑它,如果'welcomePlayer'返回一個閉包它仍然工作代碼:) – Tyblitz