[英]Javascript: this.value Function Not Working
好的,所以我有以下功能:
function hideValue(value) {
if (this.value == value) {
this.value = '';
}
以及以下表单字段:
<input onfocus="hideValue('First Name')" type="text" name="first_name" value="First Name">
我无法获取隐藏值的函数。 当我alert(value);
在函数中,它返回正确的值。
我也有一个相反的showValue函数。 为什么这些不起作用?
在DOM元素上的事件处理程序this
是指该元件仅在该功能的第一级。 因此,您需要this
传递给函数:
<input
onfocus="hideValue(this,'First Name') /* 'this' is only correct here */"
type="text" name="first_name" value="First Name"
>
因此,应将该功能修改为:
function hideValue(element, value) {
if (element.value == value) {
element.value = '';
}
}
我建议将placeholder
用于此类功能。
<input type="text" name="first_name" placeholder="First Name" />
^^^^^^^^^^^^^^^^^^^^^^^^
演示:
<input type="text" name="first_name" placeholder="First Name" />
问题:
this
在函数内部hideValue()
是指全球window
对象。
解:
您可以this
引用传递给事件处理程序。
<input onfocus="hideValue(this, 'First Name')"
^^^^
并捕获内部事件处理程序
function hideValue(that, value) {
^^^^ // What is that? `this`
if (that.value === value) {
that.value = '';
}
}
function hideValue(that, value) { if (that.value === value) { that.value = ''; } }
<input onfocus="hideValue(this, 'First Name')" type="text" name="first_name" value="First Name">
<input onfocus="hideValue(this,'First Name')" type="text" name="first_name" value="First Name">
<script>
function hideValue(thisvalue,value) {
if (thisvalue.value == value) {
thisvalue.value = '';
}
}
</script>
请检查一下。 工作正常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.