2

我有我的文本区域,当它被点击时,我希望清除文本

<textarea id="cow" rows="5" name="message" cols="50" onfocus="clear()" >Please provide a link to an image no wider than 500px. </textarea>

以及来自外部 js 文件的 javascript:

var cow=document.getElementById("cow").value;
function clear(){ document.getElementById("cow").value=' '; }

我意识到我可能可以使用 Jquery,但我只是在尝试学习 javascript。

4

2 回答 2

4

信不信由你,你的代码没问题,除了你把函数命名为这个事实clear

在某些浏览器中,在内联事件处理程序中,document对象被连接到事件处理程序的作用域链中。这有一个不幸的效果,它不是指您的功能,而是指. 此行为未标准化,因此根据您使用的浏览器,您可能会看到不同的结果。cleardocument.clear

如果你重命名你的函数,它工作得很好:http: //jsfiddle.net/QqMsX/


您绝对应该阅读“在 Javascript 中“清除”是保留字吗? ”,其中我还解释了如何避免这种情况。

于 2013-02-13T21:32:50.680 回答
2

似乎浏览器正在尝试调用document.clear而不是您创建的 clear 函数。如果您将函数重命名为clearText,它可以正常工作http://jsfiddle.net/7meL7/

避免该问题的一个好方法是在属性中完全避免 JS

<textarea id="cow" rows="5" name="message" cols="50">Please provide a link to an image no wider than 500px. </textarea>

// There are better ways, but this is the simplest crossbrowser way
document.getElementById("cow").onfocus = function() {
    this.value = '';
}
于 2013-02-13T21:33:16.137 回答