繁体   English   中英

使用Javascript和HTML创建一个清除按钮

[英]Creating a clear button using Javascript and HTML

首先,我知道这个问题之前已经被问到了 - 我已经查看了这些答案,但由于某些原因它根本不适合我!

我有各种各样的文本字段,我希望有一个“清除”按钮,以便在单击时清空字段的值。

这是我的JavaScript:

function clear() {
    document.getElementById("customerName").value="";
}

我的HTML就是......

<table border="1" id="orderForm">
    <tr>
        <th colspan="2">Customer Details</th>
    </tr>
    <tr>
        <td id="font">Customer Name</td>
        <td><input type="text" id="customerName"></td>
    </tr>
</table>

<button type="button" id="button1" onClick="clear()">Clear</button>

我不知道为什么它不起作用,我一直试图让它工作多年。

clear()通常不是一个好的函数名来定义。 它与document.clear冲突。

还记得你总是可以使用<input type="reset" value="clear"/>这可能更简单! :)

 function clearIt() { document.getElementById('customerName').value = ""; } 
 <table border="1" id="orderForm"> <tr> <th colspan="2">Customer Details</th> </tr> <tr> <td id="font">Customer Name</td> <td><input type="text" id="customerName"></td> </tr> </table> <button type="button" id="button1" onClick="clearIt()">Clear</button> 

正如@Pratyush已经提到的,将函数名称更改为其他内容 - 您的代码将正常工作。

为了清楚起见, clear() 完全有效的Vanilla Javascript。

事实上, document定义了一个clear()

在此输入图像描述

...并且由于您的HTML属性分配了单击处理程序 ,因此使用修改后的作用域链执行, document对象的clear()位于作用域链中的全局函数之前(来自Javascript:The Definitive Guide):

但是,注册为HTML属性的事件处理程序是一种特殊情况。 它们被转换为顶级函数,可以访问全局变量,但不能访问任何局部变量。 但是,由于历史原因,它们使用修改后的范围链运行。 由HTML属性定义的事件处理程序可以使用目标对象的属性,包含对象(如果有),以及Document对象,就好像它们是局部变量一样。

然后他讨论了你的确切案例:

HTML事件处理程序的修改范围链是陷阱的来源,因为链中每个对象的属性都会影响全局对象中同名的任何属性。 例如,Document对象定义了一个(很少使用的)open()方法,因此想要调用Window对象的open()方法的HTML事件处理程序必须显式写入window.open而不是open

所以,你的功能可以通过HTML中的window.clear()来实现:

 function clear() { document.getElementById("customerName").value=""; } 
 <table border="1" id="orderForm"> <tr> <th colspan="2">Customer Details</th> </tr> <tr> <td id="font">Customer Name</td> <td><input type="text" id="customerName"></td> </tr> </table> <button type="button" id="button1" onClick="window.clear()">Clear</button> 

首先调用jquery库然后执行以下代码而不是你的代码

$document.ready(function(){
$("button1").click(function(){
document.getElementById("#customerName").value="";
});
});

我更喜欢在body标记结束之前放置所有javascript。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM