Javascript 为什么可以';我是否从onclick属性调用名为clear的函数?
我正在尝试创建一个简单的计算器,当单击一个按钮时,其值显示在文本字段中,按钮“C”应该清除文本字段,但其onclick=“clear()”不起作用Javascript 为什么可以';我是否从onclick属性调用名为clear的函数?,javascript,html,Javascript,Html,我正在尝试创建一个简单的计算器,当单击一个按钮时,其值显示在文本字段中,按钮“C”应该清除文本字段,但其onclick=“clear()”不起作用 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Calculator</title>
<style>
#button{
padding: 10px;
}
</style>
<script>
function fill(val){
document.getElementById("field").value+=val;
}
function clear(){
document.getElementById("field").value="";
}
</script>
</head>
<body>
<form>
<table>
<tr><input type="text" name="field" id="field" size="8"/></tr>
<%! int k = 1; %>
<% for(int i=0;i<3;i++){ %>
<tr> <%
for(int j=0;j<3;j++){ %>
<td><input type="button" id="button" onclick="fill(this.value)" value="<%=k++%>" /></td>
<% } %>
</tr>
<% } %>
<tr>
<!--here onclick="clear()" is not working?? -->
<td><input type="button" id="button" value="C" onclick="clear()"/></td>
<td><input type="button" id="button" value="0" onclick="fill(this.value)"</td>
<td><input type="submit" id="button" value="="</td>
</tr>
</table>
</form>
</body>
</html>
计算器
#钮扣{
填充:10px;
}
函数填充(val){
document.getElementById(“字段”).value+=val;
}
函数clear(){
document.getElementById(“字段”).value=“”;
}
内在事件属性(如onclick
)非常可怕。它们在内部执行:
不建议使用with语句,因为它可能会导致混淆错误和兼容性问题
因此,您实际上是在调用而不是全局clear()
快速修复方法是将函数重命名为其他函数,或显式调用window.clear()
更好的解决方案是将事件处理程序绑定为事件属性,而不是内部事件属性
您的HTML有问题,但函数无法工作的原因是它的名称“clear”,该名称已由document.clear()
定义
将该函数的名称更改为类似于clearField()
的名称,它就会工作。您遇到了客户端问题。不要向我们显示服务器端代码。获取HTML输出。您没有关闭按钮标记。不可靠的语法突出显示应该是错误的。您的HTML无效。好好使用,据我所知,您的最后两个输入是一场灾难:第一个输入没有关闭,而第二个输入没有关闭,并且有一个caotic值:value=“=”
,您应该首先修复这些输入。使用不同的ID。这就是为什么它叫id。把你的脚本放在身体的末端,而不是头部。有时您会触发一些尚未加载(正文)的内容。内在处理程序的作用域链上有许多对象,包括当前元素和文档,可能还有祖先元素(例如,表单控制处理程序的作用域链上有表单)。with是否用于此目的还没有定论。在这些元素上解析哪个标识符(例如,ID始终在当前目标上,操作将在父窗体上,类名可能在任何位置)或全局/窗口对象上并不总是很清楚。更好地命名全局标识符(例如,冲突可能性更小,更具描述性)也有帮助。哇。。。真是一件事。以前不知道这一点。因此,您实际上调用的是document.clear()而不是全局clear()为什么有文档
?你知道这与功能如何与onclick
类似属性一起工作吗?@Maximus-因为,如屏幕截图所示,有一个with块使用文档对象。@Quentin,我可以看到:)。我想知道为什么它使用文档
作为对象的