我正在选择完全用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