Javascript 外壳/开关未激活onClick事件

Javascript 外壳/开关未激活onClick事件,javascript,html,function,dom,switch-statement,Javascript,Html,Function,Dom,Switch Statement,我正在使用香草Javascript重新创建Fallout终端游戏——游戏的主要元素之一是将您选择的单词与计算机选择的单词进行比较 黑客游戏类似于棋盘游戏Mastermind。你会的 提供一个单词列表,所有单词长度相同…一个 其中一个单词是正确的密码,您的目标是猜测它 你可以通过点击来选择一个单词。如果你猜错了, 终端将显示“x/y正确”,其中x是 正确的字母,y是单词长度。只有在下列情况下,字母才是正确的 它在正确的位置 我在控制台中使用了比较功能,最近我能够在屏幕上显示案例0部分,但当我单击另

我正在使用香草Javascript重新创建Fallout终端游戏——游戏的主要元素之一是将您选择的单词与计算机选择的单词进行比较

黑客游戏类似于棋盘游戏Mastermind。你会的 提供一个单词列表,所有单词长度相同…一个 其中一个单词是正确的密码,您的目标是猜测它

你可以通过点击来选择一个单词。如果你猜错了, 终端将显示“x/y正确”,其中x是 正确的字母,y是单词长度。只有在下列情况下,字母才是正确的 它在正确的位置

我在控制台中使用了比较功能,最近我能够在屏幕上显示案例0部分,但当我单击另一个单词时,它不会加载下一行“剩余三次尝试”

我不确定我的代码是否有明显的缺陷,或者我是否完全遗漏了什么,所以我想我应该在这里询问一下

.js文件:

var giantArray = []; // combination of var garbage and var words

var goalWord = ""; // word that the computer chose to be the "goal"  // STRING

var userWord = ""; // the current word that the user selected // STRING

var playerAttempts = 0; // how many past attempts the user has made


函数createtrunt(){
开关(播放尝试){
案例0:
attempts.innerHTML=“剩余四次尝试[][]”;
打破
案例1:
attempts.innerHTML+=“剩余三次尝试。[][][]
”; 打破 案例2: attempts.innerHTML+=“还有两次尝试。[][]
”; 打破 案例3: attempts.innerHTML+=“!!警告:锁定挂起!![]
”; 打破 违约: attempts.innerHTML+=“此终端已被锁定。请与管理员联系。”; 打破 } playerats++; } createtrument(); 函数clickFunc(evt){ if(evt.target.innerText.slice(1)==goalWord){//需要.slice方法来消除空格字符 log('Welcome back'+'); }否则{ console.log('重试') } }
clickFunk()

HTML:

   <div class="panels"> <!-- level 3 -->

        <div class="top-text"> <!-- level 4 -->
          <ul>
            <li>______ INDUSTRIES (TM) TERMALINK PROTOCOL</li>
            <li>ENTER YOUR PASSWORD</li>
          </ul>
        </div>

    <div id="attempts"></div> <!-- level 4 -->

  • ______工业(TM)TERMALINK协议
  • 输入您的密码

但当我单击另一个单词时,它不会加载下一行“剩余三次尝试”。
是您问题的关键字。它第一次加载,因为您只调用了一次。当您实际单击某个对象时(这会调用您的单击函数),您不会再次调用它。您需要在click函数中调用它以重新调用该函数。因此:

createAttempt();

function clickFunc(evt) {
  createAttempt();
  if (evt.target.innerText.slice(1) === goalWord) { // need .slice method to eliminate space character
  console.log('Welcome back' + '. ');

  } else {
  console.log('try again')
  }
}
现在,您会发现,根据开关的值,每次单击时都会打印它

更新

在您发布的代码中没有看到任何实际调用clickFunc调用的地方。当你点击某个东西时,你需要告诉它调用什么函数。因此,在目标元素中,只需将
onclick
属性设置为指向函数,如下所示:


onclick=“clickFunc(event)”

谁在调用
clickFunc
?哪里定义了
playertests
?顶部定义了@JaromandaX playertests。我忘了将其添加到这个问题中,但我现在就这么做。@brk我没有意识到clickFunc调用丢失了---我添加了它,但收到了一条错误消息(无法读取clickFunc上undefined的属性'target',当我添加参数时,我会收到类似的错误。我会仔细考虑一下,看看我能做些什么。你只调用
createtrunt
一次?
   <div class="panels"> <!-- level 3 -->

        <div class="top-text"> <!-- level 4 -->
          <ul>
            <li>______ INDUSTRIES (TM) TERMALINK PROTOCOL</li>
            <li>ENTER YOUR PASSWORD</li>
          </ul>
        </div>

    <div id="attempts"></div> <!-- level 4 -->
createAttempt();

function clickFunc(evt) {
  createAttempt();
  if (evt.target.innerText.slice(1) === goalWord) { // need .slice method to eliminate space character
  console.log('Welcome back' + '. ');

  } else {
  console.log('try again')
  }
}