«х» не является функцией в - PullRequest
0 голосов
/ 26 марта 2020

Я получаю сообщение об ошибке:

проверка не является функцией в вопросе области 1

check is not a function at area question 1

и

проверка не является функцией в HTMLInputElement.onclick

check is not a function at HTMLInputElement.onclick

, и я думаю, что это является причиной того, что функция check () не работает. Я посмотрел на очень много других решений этой проблемы, но ни одно из них не является действительно полезным для моей проблемы. Любая помощь будет принята с благодарностью!

var number1;
var number2;
var response;
var calcanswer;
var score = 0;
window.onload = areaquestion1;
score.innerHTML = "SCORE: " + score;

function areaquestion1() {
    var imageBlock = document.createElement("img");
    imageBlock.setAttribute("id", "img");
    imageBlock.setAttribute("src", "Images/2_1.png");
    imageBlock.setAttribute("width", "700");
    imageBlock.setAttribute("height", "400");
    imageBlock.setAttribute("alt", "2_1");
    document.getElementById('img').appendChild(imageBlock); // this appends it to the bottom of the page
    number1 = 2
    number2 = 1
    calcanswer = (number1*number2);
    var question = document.getElementById("question");
    question.innerHTML = "What is the area of this lego brick?";  
    document.getElementById("check").check();
}
function areaquestion2() {
    var imageBlock = document.createElement("img");
    imageBlock.setAttribute("id", "img");
    imageBlock.setAttribute("src", "Images/4_2.png");
    imageBlock.setAttribute("alt", "4_2");
    document.body.appendChild(imageBlock); // this appends it to the bottom of the page
    number1 = 4
    number2 = 2
    calcanswer = (number1*number2);
    var question = document.getElementById("question");
    question.innerHTML = "What is the area of this lego brick?";
    document.getElementById("solve").check();
}


function check() {
    var statusDiv = document.getElementById("status");
    response=document.getElementById("answer").value;

    if(response != calcanswer)
    statusDiv.innerHTML="Incorrect";
    else
    if (response==calcanswer)
    {
        statusDiv.innerHTML="Very good!";
        score ++;
        document.getElementById("score").textContent = score
        document.getElementById("answer").value = "";
        
    }
}
<!DOCTYPE html>
<html>
<title>Lego Area Play</title>
  <head>
    <link rel="stylesheet" href="CSS/gridtest.css">
    <script src="JavaScript/Play.js"></script>
  </head>
<body onload="areaquestion1();">
  
  <div class="header">
    <h1>LEGO AREA</h1>
    <p>Calculating <b>area</b> with Emmet.</p>
    <div id="scorelabel"><label>SCORE:</label></div>
    <div id="score" class="score"></div>
  </div>


<form>
  <div class="row">
    <div class="column" style="background-color:#aaa;">
      <div id="question"></div>
      <div id="img"></div>
      <div id="status"></div>
    </div>
    <div class="column" style="background-color:#bbb;">
        <div id ="prompt"></div>
        <label>Area = </label>
        <input type="text" id="answer" placeholder="Answer"/>
        <label>Units<sup>2</sup></label>
    </div>
    <div class="column" style="background-color:#ccc;">
        <input id="check" type="button" value="CHECK!" onclick="check()" />
        <div class="practice"> <a href="Practice.html"><img src="Images/legoBlue2.png" id="practicebtn" alt="lego button for practice page" width=350px height=140px></a></div>
        <div class="menu"> <a href="LegoWelcome.html"><img src="Images/menured.png" id="menubtn" alt = "lego button for menu page" width=350px height=140px></a></div>
    </div>
  </div>
</form>
  
</body>
</html>

1 Ответ

0 голосов
/ 26 марта 2020

Как указал Cannicide, вторая ошибка возникает при вызове arequestion1() при загрузке в строке document.getElementById("check").check();

. Вы добавили метод проверки в onclick, но не добавили новое свойство для кнопки.

Ваша первая ошибка немного сложнее. Это самое простое воссоздание вашей ошибки, которую я пытался создать.

<!DOCTYPE html>
<html>
  <head>
  </head>
<body>

  <script>
  function f(){
    console.log("f run")
  }
  </script>

<!--   id same as function name -->
  <input id="f" type="button" value = "B1" onclick="f()" />
    
<!--   button inside a form -->
  <form>
    <input type="button" value = "B2" onclick="f()" />
  </form>

<!--   button inside a form with random id -->
  <form>
    <input id="somethingelse" type="button" value = "B3" onclick="f()" />
  </form>
  
<!--   button inside a form, equal id and method name -->
  <form>
    <input id="f" type="button" value = "B4" onclick="f()" />
  </form>
  
</body>
</html>

Имеется 4 кнопки, каждая с небольшим отличием в своем окружении. Обратите внимание, что только кнопка, которая находится внутри формы и имеет одно и то же имя и имя метода onclick, выдает ошибку.

К этой ошибке, к сожалению, я понятия не имею, почему и как это происходит. Если кто-то здесь знает, что здесь происходит, пожалуйста, объясните! ура :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...