JavaScript闭包和HTML按钮:如何使这项工作

时间:2019-05-03 01:14:09

标签: javascript html closures

这里的初级开发人员:我是一名技术作家,涉猎代码,但是我正尝试将工具包扩展到Web开发中。我一直在尝试使用闭包,但遇到了一些问题。我正在尝试创建一个按钮,说我的猫有多可爱,但它没有运行。这不适用于任何特定项目,我只是在尝试正确地关闭闭包。我很高兴代码能够正常工作,但我真的很想让它与HTML正确交互。

最初,它给出的错误是找不到变量“ cats”,所以我尝试在JS中添加此字符串:

document.getElementById("button").onclick = x();

但是,这引发了一个完全不同的错误(请参见下文)。我不太确定如何使它与HTML连接,并且在线指南并没有真正帮助,有一些帖子对此进行了详细说明,但我不明白他们在说什么。他们倾向于回答一个非常具体的问题,该问题对OP有所帮助,但并未说明我的代码出了什么问题。我已将其返回到开始的地方,这使我们可以:

这是HTML按钮:

<input id="clickMe" type="button" value="How great is Beans?" onclick="x();" />

这是JS:

function cats() {
   let cuteness = 5;
   function myCatBeans() {
      const attitude = 5;
      console.log('My cat Beans is 10/' + (cuteness + attitude));
   }
   return myCatBeans;
}

let x = cats();
x();

在控制台上,预期结果是“我的猫豆是10/10”。当我将代码作为纯JS运行时会出现这种情况,但是当我单击按钮时却没有出现。单击带有当前代码的按钮将引发 Can't find variable: cats。我认为这是因为HTML在关闭方面的表现不佳。

如果我尝试在JS中使用以下内容创建按钮: document.getElementById("button").onclick = x(); 我得到: [Error] TypeError: null is not an object (evaluating 'document.getElementById("button").onclick = x()')

我知道有人指出解决方案时我会踢自己,但我一直在尝试阅读有关这些错误的其他文章,但我并未真正关注。 JSFiddle供那些想看完整内容的人使用:link

谢谢您的时间!

0 个答案:

没有答案