【问题标题】:Compare generated letter with user input将生成的字母与用户输入进行比较
【发布时间】:2017-03-09 12:32:25
【问题描述】:

我的问题如下:我想实现一个(非常)小应用程序,我想在其中生成一个字母(在 A 和 E 之间)并将其与之后的用户输入进行比较。如果用户输入与生成的字母不同,则会弹出一条消息,告诉用户他做出了错误的选择。如果用户做出了正确的选择,则计数器获得 +1,如果用户达到 5 分中的至少 3 分,则他赢得奖品。用户在脚本结束前尝试了 3 次。

障碍是我的主要关注点在于 php。我对 JavaScript 的了解并不多。

所以当用户输入他的答案时,我的脚本不会做任何事情。

【问题讨论】:

  • 输入值改变时你没有触发函数?尝试在用户写入或字段中的值发生变化时运行比较。
  • which = document.getElementById('which').value 移动到 compare
  • 还有几个问题(var i = 0; i < 1; i++)为什么?还有else { if(...){} }?您可以使用else if。同样在我的理解中,正确的分数应该只增加,控制功能应该不同
  • 还是不行你能再解释一下吗?你应该停在错误的字符上吗?
  • 我试过你的sn-p,如果我使用了错误的字母,我会得到一个错误,如果我使用了正确的字母就会成功。您面临的确切错误是什么?

标签: javascript jquery compare


【解决方案1】:

解决了! 下面的代码就是解决方案。

String.prototype.last = function(){


return this[this.length - 1]
}
;(function() {
  var score = 0;
  var text = "";
  var possible = "ABCDE";
  var noOfTries = 5;

  function generateCharacter() {
    var index = Math.floor(Math.random() * 100) % possible.length;
    text = possible[index];
    possible = possible.slice(0, index) + possible.slice(index+1);
    alert(text);
    return text;
  }

  function validate(string) {
    return (string || "").trim().last() === text.last();
  }

  function handleChange(){
  	var valid = validate(this.value);
    if(valid){
    	score++;
      alert("Richtig!");
    }else{
    	alert("Das war leider falsch. Die richtige Antwort wäre " + text + " gewesen!");
    }
    console.log(this.value.length === noOfTries)
    this.value.length === noOfTries ? notify() : generateCharacter();
  }
  
  function notify(){
  	if(score == 0) {
    	alert("Schade! Sie haben " + score + " Punkte erreicht! Nochmal?");
    }else if(score >= 1 && score <3){
    	alert("Schade! Sie haben lediglich " + score + " von 5 Punkten erreicht! Nochmal?");
    }else if(score >= 3 && score <= 5) {
      alert("Herzlichen Glückwunsch! Sie haben " + score + " von 5 Punkten erreicht!");
    }
  }
  
  function registerEvent(){
  	document.getElementById('which').addEventListener('keyup', handleChange);
  }
  registerEvent();
  generateCharacter();
})()
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <label for="which">Antwort? </label>
    <input type="text" name="which" id="which" placeholder="#" style="width: 9px;">

这是小提琴:Compare generated string with user input

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多