【问题标题】:JS console tells me that defined function is not a functionJS控制台告诉我定义的函数不是函数
【发布时间】:2017-03-20 12:35:34
【问题描述】:

在我的 javascript 文件中,我这样定义 clear:

function clear() {
    document.imp1.value = 0
    document.imp2.value = 0
}

我不确定它的语法,但这不是这里的问题(尽管如果它是错误的,我也希望能得到一些帮助。)我的问题是每当我按下按钮时清除,如定义:

<div id="calc">
    <form name="calc_input">
    <input type="text" id="imp1" value="0"/>
    <input type="text" id="imp2" value="0"/>
    <!-- buttons -->
    <button type="button" onclick="clear()" id="clear">Clear</button>

    </form>
</div>

我收到一条错误消息,告诉我“清除”不是函数。有什么想法吗?

编辑:结果很明显与另一个内置函数冲突,我将它重命名为 clr 并且它可以工作。

【问题讨论】:

  • 也许你得到这个错误的原因是因为你在你的html之后包含了js文件。把它放在顶部,或者在你的 html 的标题部分来修复它
  • 我不完全确定,但实际上并没有使用clear,因为它也内置在控制台中以清除控制台。调试时会遇到问题
  • 您是否将function clear() { ... } 嵌入到您的js 文件中的另一个函数中? (如(function(){..}())
  • 我的其他 js 和其他按钮工作正常。我只是为了代码清晰而省略了它们,但访问 JS 不是问题
  • 因为你的按钮id和函数名有名字冲突......

标签: javascript html calculator


【解决方案1】:

如何使用按钮类型重置?无需 JS。

<button type="reset" value="Clear">Clear</button>

【讨论】:

  • 这解决了这个问题,但它没有解释为什么 OP 有函数名称与元素 ID 冲突的问题(这源于 20 年前 IE 和 JScript 开发人员决定创建来自元素 ID 的全局变量)。
  • 我想我只需要在尝试使用之前检查我定义的任何函数是否已经存在
  • @alec935—那么您正在讨论元素和变量的合理命名约定(并且按钮无论如何都不需要ID)。 ;-)
  • @robG 我喜欢为我的所有按钮使用 id 用于 css 目的:)
【解决方案2】:

将点击功能的名称从“clear”更改为“del”,它就会起作用。 :)

像这样:

<div id="calc">
<form name="calc_input">
<input type="text" id="imp1" value="0"/>
<input type="text" id="imp2" value="0"/>
<!-- buttons -->
<button type="button"  onclick="del()" id="clear">Clear</button>
</form>
</div>

<script>
function del()
{
$('#imp1').val(0);
$('#imp2').val(0);
}
</script>

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2023-01-26
    相关资源
    最近更新 更多