如果for循环中的子句很奇怪

时间:2016-10-26 18:37:13

标签: javascript if-statement for-loop

我有一个功能,它收集输入的答案并检查收集的答案是否与解决方案相同。问题是随机提出的。问题和解决方案位于单独的.txt文件中。

我有一个带有一些单词的文件,如果列表中的最后一个单词被正确回答,程序总是满足其条件,即使其他问题的其他答案都是正确的。

有什么建议吗?

var besedeNemske = ["glava", "voda", "drevo"];
var besedePrevod = ["der Kopf", "das Wasser", "der Baum"];


window.onload = function() {
  var fileInput = document.getElementById('fileInput');
  var fileDisplayArea = document.getElementById('fileDisplayArea');

  fileInput.addEventListener('change', function(e) {
    var file = fileInput.files[0];
    var textType = /text.*/;

    if (file.type.match(textType)) {
      var reader = new FileReader();

      reader.onload = function(e) {

        var lines = this.result.split('\n');
        for (var line = 0; line < lines.length; line++) {
          if (line % 2 != 0) {
            besedeNemske.push(lines[line]);
          } else {
            besedePrevod.push(lines[line]);
          }
        }

      }

      reader.readAsText(file);
    } else {
      fileDisplayArea.innerText = "File not supported!"
    }
  });
}



var random = 0;

function nastaviRandom() {
  random = Math.floor(Math.random() * 5);
}

function noviGlagol() {

  nastaviRandom();

  document.getElementById("vprasanje").innerHTML = besedePrevod[random];

}

function preveriOdgovor() {
  var odgovorjeno = document.getElementById("mojOdgovor").value;
  if (besedeNemske.indexOf(odgovorjeno) == random) {
    document.getElementById("odgovor").innerHTML = "Pravilni odgovor";
  } else {
    document.getElementById("odgovor").innerHTML = "Napačen odgovor.   Pravilni odgovor je " + (besedeNemske[random]) + "";
  }
}
<html>

<head>
  <meta charset="UTF-8">
</head>

<body>
  <div id="page-wrapper">

    <h1>Nemščina glagoli</h1>
    <div>
      Select a text file:
      <input type="file" id="fileInput">
    </div>
    <pre id="fileDisplayArea"><pre>

        <button onclick="noviGlagol()">Novi glagol</button>

        <div id="vprasanje"></div>
        <div id="odgovor"></div>

        <input type="text" id="mojOdgovor">
        <button onclick="preveriOdgovor()">Pošlji</button>
</div>
<script>
</script>
</body>
<html>

1 个答案:

答案 0 :(得分:0)

提交原始问题的评论作为答案:

var index = 0;
for (var i = 0; i < besedeNemske.length; i++) {
  if (odgovorjeno == besedeNemske[i]) {
    index = i;
    break;
  }
}
对于这两种情况,

index将为0

  1. if odgovorjeno == besedeNemske[0]
  2. 如果odgovorjeno不是数组besedeNemske
  3. 中的元素

    这是一个非常好的用例,用于重构代码以使用包含的语言功能或库,因为它不仅缩短了代码,而且通常更正确(或至少知道/了解它们的错误)。

    正如Baramar指出的那样,您可以将解决方案更改为:

    function preveriOdgovor() {
      var odgovorjeno = document.getElementById("mojOdgovor").value;
      if (besedeNemske.indexOf(odgovorjeno) == random) {
        document.getElementById("odgovor").innerHTML = "Pravilni odgovor";
      } else {
        document.getElementById("odgovor").innerHTML = "Napačen odgovor.   Pravilni odgovor je " + (besedeNemske[random]) + "";
      }
    }