功能点击不起作用...不显示警告框

function onclick not working .. ... not showing alert box

本文关键字:显示 警告 不起作用 功能      更新时间:2023-09-26

html code

<input type="button" value="+" onclick="alert()" />

在 chrome 中检查后显示此错误未捕获范围错误:超出最大调用堆栈大小。

JavaScript

<script type="text/javascript">
  function alert() {
    alert("Hello! I am an alert box!!");
  }
</script>

通过告诉我如何解决这个问题来帮助我

你用新定义覆盖现有的函数定义,除了调用自身之外,还会导致太多的递归。

正如其他用户提到的,你只需要用与 alert() 不同的名称创建你的函数,这是一个在 javascript 中已经定义的函数,你不应该使用它。

我宁愿使用标准的addEventListener,这将使您的代码和html更清晰

你可以做这样的事情,你也可以直接从这个页面尝试:

function myDefinedAlert() {
  alert("Hello! I am an alert box!!");
}
var el = document.getElementById("yourButton");
el.addEventListener("click", myDefinedAlert, false);
<input id="yourButton" type="button" value="+" />

按下按钮,尝试一下,然后将其复制到您的代码中,让我知道它是否有效:)

那是因为你在alert()中调用alert(),所以结果是递归。

alert()是一个内置函数,并不意味着要重新定义。尽管您重新定义了,但您在新函数中调用了相同的函数,这是错误的。所以,简单来说,给一个不同的名称,比如myAlert()什么的:

function myAlert() {
  alert("Hello! I am an alert box!!");
}

因此,递归地调用alert()函数并溢出堆栈。

解决方案片段

function myAlert() {
  alert("Hello! I am an alert box!!");
}
<input type="button" value="+" onclick="myAlert()" />

你不能有一个递归函数,就像你在 Javascript 中所做的那样,因为它会继续循环失控并在浏览器中消耗更多内存。从函数内部调用函数时,需要确保没有调用相同的函数。