Javascript onclick调用函数不';好像不行
我有我的文本区域,当它被点击时,我希望文本被清除Javascript onclick调用函数不';好像不行,javascript,html,Javascript,Html,我有我的文本区域,当它被点击时,我希望文本被清除 <textarea id="cow" rows="5" name="message" cols="50" onfocus="clear()" >Please provide a link to an image no wider than 500px. </textarea> 我意识到我可能会使用Jquery,但我只是在尝试学习javascript 信不信由你,除了将函数命名为clear之外,你的代码还可以 在内联事件处
<textarea id="cow" rows="5" name="message" cols="50" onfocus="clear()" >Please provide a link to an image no wider than 500px. </textarea>
我意识到我可能会使用Jquery,但我只是在尝试学习javascript 信不信由你,除了将函数命名为clear之外,你的代码还可以 在内联事件处理程序中,在某些浏览器中,
文档
对象连接到事件处理程序的作用域链中。这会产生一种不幸的效果,即clear
不是指您的函数,而是指。此行为未标准化,因此根据您使用的浏览器,您可能会看到不同的结果
如果您重命名您的函数,它工作正常:
您一定应该阅读“”,其中我还解释了如何避免这种情况。似乎浏览器试图调用
文档。清除而不是您创建的清除函数。如果您将函数重命名为clearText
,它可以正常工作
避免该问题的一个好方法是完全避免属性中的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 = '';
}
请提供不超过500px的图像链接。
//有更好的方法,但这是最简单的交叉方式
document.getElementById(“cow”).onfocus=function(){
这个值=“”;
}
您的结束标记真的是这样的,还是复制粘贴错误?另外,尝试实际使用onclick而不是onfocus@LifeInTheGreyJacobM在编辑中对它进行了修改。如果你想学习JavaScript。即使您在这里编写的最小代码也已经构建得很糟糕。我在处理程序中测试了document.clear===clear
。你能解释一下“文档对象连接到事件处理程序的作用域”是什么意思吗?作用域是这个
元素,对吗?但是在处理程序中没有使用this
。这就像在处理程序的周围有一个隐藏的和(document){}
,不,有“scope”我指的是函数中可以访问的所有变量<代码>此
不是范围<代码>此
只是此
:)就像窗口
是函数作用域链(全局变量)的一部分一样,文档
位于内联事件处理程序的作用域链内。这就是我要求澄清的原因;然而,许多人把这个
称为函数的范围
(这并不正确)。我现在确实明白了,您正在谈论范围链(这是一个和(document){}
一起做的),感谢您仔细研究过的答案!我总是想知道任何答案背后的原因。谢谢你解决了我的问题,费利克多。尽管我自己也试过,但它们都对我有用!我对JavaScript的唯一抱怨是浏览器之间的奇怪之处:-)我要研究一下,我打赌clear是一个名称空间中某个保留的单词。@defaultNINJA:看看我的答案和我链接到的问题。@defaultNINJA是的,链接的答案解释得很好
<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 = '';
}