为什么我不能从onclick属性调用一个名为CLEAR的函数?

为什么我不能从onclick属性调用一个名为CLEAR的函数?

我试图创建一个简单的计算器,当单击一个按钮时,它的值显示在文本字段中,而按钮“C”应该清除文本字段,但是它的onClick=“CLEAR()”不工作吗?

<%@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>


慕仙森
浏览 533回答 2
2回答

慕婉清6462132

内在事件属性(如onclick)是可怕的。在内部他们实施with:不建议使用WITH语句,因为它可能是混淆bug和兼容性问题的根源。因此,你实际上是在打电话document.clear()而不是你的全球clear().快速修复方法是将函数重命名为其他函数或显式调用window.clear().更好的解决方案是将事件处理程序绑定到addEventListener而不是内在的事件属性。

三国纷争

您的HTML有问题,但是您的函数不能工作的原因是它的名称“CLEAR”,这个名称已经由document.CLEAR()定义。将该函数的名称更改为类似Clearfield()的名称,它就会工作。
打开App,查看更多内容
随时随地看视频慕课网APP