使此代码在不使用匿名函数的情况下运行

make this code run without using anonyomous function

本文关键字:函数 情况下 运行 代码      更新时间:2023-09-26

这是我的JS代码 http://jsfiddle.net/f653jnm0/

<body>
<button id="textChanger">change first div text</button>
<div id="firstdiv"> this is some text</div>
<script type="text/javascript">
document.getElementById("textChanger").onclick=function() {document.getElementById("firstdiv").innerHTML='blabla'};
</script>

当您单击该按钮时,它会更改文本。 我想知道为什么我们需要使用匿名函数来使其工作?没有它我们就不能运行代码吗?如下所示。

http://jsfiddle.net/hjavw3h5/1/

<body>
<button id="textChanger">change first div text</button>
<div id="firstdiv"> this is some text</div>
<script type="text/javascript">
document.getElementById("textChanger").onclick=document.getElementById('firstdiv').innerHTML='bla bla bla';
</script>

在这种情况下,JS代码默认运行,文本在不与按钮交互的情况下更改。我刚开始学习JS,所以你的帮助将不胜感激。谢谢:)

我想知道为什么我们需要使用匿名函数来使其工作?

因为您必须为浏览器/引擎提供可以在事件发生时执行的东西。函数允许您执行此操作。

注意:该函数不必是匿名的,也可以命名为:

function handler() {
    // handler code here
}
document.getElementById('target').onclick = handler;

没有它我们就不能运行代码吗?

否(至少不是点击)。

你的说法只对了一半。

您需要一个函数,因为(我假设)您希望在单击时更改文本,而不是在定义事件处理程序时更改文本。由于计算机仍然无法读取程序员的思想,因此必须有语法糖来区分这两种情况:

  1. 这是一些代码,现在运行它
  2. 这是一些代码,稍后运行

函数(或类似的构造)已经存在于几乎所有语言中,因为代码重用是编写任何复杂软件的基础。能够传递函数引用是一个干净而有用的扩展,可以解决这一需求。

但它不一定是匿名的

感谢您的有用回复。 如果得到它,在Javascript中,因为.onclick是事件处理程序,浏览器期望(仅)FUNCTION接下来出现,以定义该事件处理程序触发的内容。
但如果我们像这样编写内联脚本,则不会。http://jsfiddle.net/he0rspdz/p.s下面的代码没有显示正确使用 jsfille 链接代替。

        <body>
<button onclick="document.getElementById('firstdiv').innerHTML='bla bla bla';" id="textChanger">change first div text</button>
<div id="firstdiv"> this is some text</div>
</body>