簡體   English   中英

Javascript:this.value函數不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM