【问题标题】:Is "choose" a reserved keyword in JavaScript?“选择”是 JavaScript 中的保留关键字吗?
【发布时间】:2021-08-15 19:47:34
【问题描述】:

我会解释一下自己:我正在构建一个简单的网络,并且在 HTML 中的某个位置我有这个

<button id="choose" type="button" onclick="choose()">Choose</button>

中我添加了一个脚本文件,以便它知道在哪里可以找到 choose() 函数
<script src="scripts.js"></script>

最后在 scripts.js 文件中我定义了下一个函数:

function choose() {
    choices = document.getElementById("choices");
    console.log(choices)
}

现在问题来了。当我单击按钮时,在控制台中出现“未捕获的 TypeError:选择不是函数”,但只需删除函数名称中的最后一个“e”即可完美运行。

我完全不介意改名,但我真的很好奇发生了什么。

编辑:有些人正在关注我提供的代码中没有看到的“选择”元素,但这不是他的问题(实际上只是通过更改它的函数名称作品)。无论如何,这是完整的正文代码:

<body>
    <form>
        Introduce one element in each line:<br/>
        <textarea id="choices" rows="10" cols="70"></textarea><br/><br/>
        <button id="choose" type="button" onclick="choose()">Choose</button>
    </form>
    <div id="result"></div>
</body>

顺便说一句,对我来说,它也发生在 Firefox 中。

【问题讨论】:

  • 你的元素有id="choose"你的JS有getElementById("choices");不是同一个词
  • 如果你想知道什么是有效的,你可以看到this question
  • 哦,是的,and this
  • "choose" 不是保留字(可以参考list of reserved keywords on MDN),但是当您将元素的id 属性设置为choose 时,会创建一个全局变量,因此与函数名冲突。如果您将函数名称或按钮 id 属性更改为其他任何属性(例如,函数名称为 setChoice,按钮名称为 chooseButton),应该没问题。
  • 我最初认为这可能是原因,但很快就产生了疑问,因为它不应该覆盖现有的属性。我也无法重现这个,我的重现尝试没有抛出(至少不是同样的错误)。

标签: javascript html


【解决方案1】:

no "choose" 不是 javascript 中的保留关键字,但在代码中,您提到我们无法找到选择 ID,请简要说明,以便我们为您提供帮助。

您可以使用以下语法代替 document.getElementById("choices")

document.querySelector("#choices");

即使我从您那里收到了正确的代码,我仍在尽力给出这个答案,请参阅下面的代码

// html
<button id="choices" type="button" onclick="choose()">Choose</button>

// javascript
function choose() {
    choices = document.querySelector("#choices");
    console.log(choices);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多