简体   繁体   中英

Why isn't my try catch error not showing up?

I'm on JSFiddle and for some reason the try-catch error message only shows up when the JS code is within the tags in the HTML tab, but when it's in the separate JS tab, the try-catch error won't print.

This would work:

<!DOCTYPE html>
<html>
<body>

<p>Please input a number between 5 and 10:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="p01"></p>

<script>
function myFunction() {
  var message, x;
  message = document.getElementById("p01");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "")  throw "empty";
    if(isNaN(x)) throw "not a number";
    x = Number(x);
    if(x < 5)  throw "too low";
    if(x > 10)   throw "too high";
  }
  catch(err) {
    message.innerHTML = "Input is " + err;
  }
}
</script>

</body>
</html>

But this doesn't: https://jsfiddle.net/k0rrupt3d/rqejvzoc/

It appears that the JS section on the fiddle is locally scoped. If you change your function declaration to window.myFunction = function() { to make it global, it will function as expected.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM