0

I have finished a project and it runs perfectly.I keep getting error notifications that 'document' is not defined. I have the same notification every time I address the document. Is there a way I can keep this from being recognized as an error?

JS:

  function check_prime() {
      var input = document.getElementById("enteredNumber").value;
          var number = parseInt(input);


        if (isNaN(number)) {
       alert("Oops! Please enter a valid number.");
            document.getElementById("enteredNumber").value="";
            document.getElementById("answer").innerHTML =  "";
            document.getElementById("enteredNumber").focus();

        }

        else if (input.length === 0) {
  alert("Please enter a valid input");
            document.getElementById("enteredNumber").focus();

        }

       else if (!isNaN(number)) {
                        var divisors = is_perfect(number);
                        if (divisors) {
                            document.getElementById("answer").innerHTML = "Congratulations! " + number + " is a perfect number.";
                      alert("Congratulations! " + number + " is a perfect number. The divisors are: " + divisors.toString() + ".") ;


                        }
                        else {
                            document.getElementById("answer").innerHTML = "I'm sorry! " + number + " is not a perfect number."
                        }
                    }
                    else {
                        document.getElementById("answer").innerHTML = "Please enter a number.";
                    }
                }


function is_perfect(number) {
var temp = 0;
var divisors = [];
for(var i=1;i<=number/2;i++) {
    if (number%i === 0) {
        divisors.push(i);
        temp += i;
    }
  }  

return temp === number ? divisors : null;
 }



    function clear_textbox(){
      document.getElementById("answer").innerHTML =  "";
      document.getElementById("enteredNumber").value="";
      document.getElementById("enteredNumber").focus();

    }

HTML:

<!DOCTYPE html>
<html lang="en">
  <head>
  <!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">


    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="main.css">
    <link href="https://fonts.googleapis.com/css?family=Oswald:700" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300" rel="stylesheet">


    </head>



  <body>
<h2> PERFECTION </h2>
<h3> PLEASE ENTER A NUMBER: </h3><br>
  <div>
<input type="text" id="enteredNumber" autofocus value = "" /> <br><br>
<input type="submit" value="Check" 
title="Perfection"
onclick="check_prime()" />
<input type="submit" value="Clear" 
 title="Click here to clear the text box."
onclick="clear_textbox()" />
 <br><br>
<p id="answer"></p>
         </div>



<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script    src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<script src="app.js"> 

  </script>  

I am also getting errors that 'alert' is not defined... I don't know if I missed something.

3
  • Welcome to Stack Overflow. Please see minimal reproducible example in the Help Center. It is also useful if you use the snippet <> toolbar button. Commented Oct 20, 2017 at 3:07
  • Does this happens only on your page or on every websites? Commented Oct 20, 2017 at 3:40
  • It seems like it's only on my page. Commented Oct 20, 2017 at 3:42

2 Answers 2

4

Update: new info

Try adding

/*eslint-env browser*/

at the top.


ERROR: 'document' is not defined. [no-undef] document.getElementById("answer").innerHTML = "";

This error is a lint error (See eslint [no-undef]). It will not affect your code running in a browser, but your local build may be stopped from running when it detects lint errors.

You are probably using eslint, so check out this guide and you should configure

{
  "env": {
    "browser": true
  }
}

in your .eslintrc file.

Maybe an even easier way is just add this comment:

/*eslint-env browser*/

Your code appears to be working. Are you getting that error in the browser console? If not it might just be a lint error.

It would really help to paste the exact error message you are getting.

function check_prime() {
  var input = document.getElementById('enteredNumber').value;
  var number = parseInt(input);

  if (isNaN(number)) {
    alert('Oops! Please enter a valid number.');
    document.getElementById('enteredNumber').value = '';
    document.getElementById('answer').innerHTML = '';
    document.getElementById('enteredNumber').focus();
  } else if (input.length === 0) {
    alert('Please enter a valid input');
    document.getElementById('enteredNumber').focus();
  } else if (!isNaN(number)) {
    var divisors = is_perfect(number);
    if (divisors) {
      document.getElementById('answer').innerHTML =
        'Congratulations! ' + number + ' is a perfect number.';
      alert(
        'Congratulations! ' +
        number +
        ' is a perfect number. The divisors are: ' +
        divisors.toString() +
        '.'
      );
    } else {
      document.getElementById('answer').innerHTML =
        "I'm sorry! " + number + ' is not a perfect number.';
    }
  } else {
    document.getElementById('answer').innerHTML = 'Please enter a number.';
  }
}

function is_perfect(number) {
  var temp = 0;
  var divisors = [];
  for (var i = 1; i <= number / 2; i++) {
    if (number % i === 0) {
      divisors.push(i);
      temp += i;
    }
  }

  return temp === number ? divisors : null;
}

function clear_textbox() {
  document.getElementById('answer').innerHTML = '';
  document.getElementById('enteredNumber').value = '';
  document.getElementById('enteredNumber').focus();
}
<h2> PERFECTION </h2>
<h3> PLEASE ENTER A NUMBER: </h3><br>
<div>
  <input type="text" id="enteredNumber" autofocus value="" /> <br><br>
  <input type="submit" value="Check" title="Perfection" onclick="check_prime()" />
  <input type="submit" value="Clear" title="Click here to clear the text box." onclick="clear_textbox()" />
  <br><br>
  <p id="answer"></p>
</div>

Sign up to request clarification or add additional context in comments.

2 Comments

ERROR: 'document' is not defined. [no-undef] document.getElementById("answer").innerHTML = "";
@user7124275 yes this is a lint error for sure. It will not affect your code running in a browser, but your local build may be stopped from running. You are probably using eslint, so check out this guide and you should configure { "env": { "browser": true } } in your .eslintrc file.
0

To remove this error you can use eslint. For Brackets editor install brackets-eslint

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.