2013-03-06 167 views
1

我試圖創建一個按鈕,當它按下時更改其值。按下按鈕時更改名稱

$("button").click(function() { 
    valor = this.html(); 
    retorno = (valor == 'Exibir') ? 'Ocultar' : 'Exibir'; 
    this.html(retorno); 
}); 

我有這樣的信息:

遺漏的類型錯誤:對象#有沒有方法 'HTML'

我感謝所有幫助。

+1

這是一個很大的全局變量... – Quentin 2013-03-06 16:23:13

+2

至於昆汀提到 - 你被你的函數中沒有聲明的變量爲本地污染全局空間。在這些錯誤之前添加「var」使其成爲本地。 – 2013-03-06 16:24:59

+0

謝謝大家對全局的解釋。我不知道。 – 2013-03-07 16:37:25

回答

1

嘗試此

valor = $(this).html(); 
5

this是HTMLElementNode對象,而不是jQuery對象。

valor = jQuery(this).html(); 
+0

爲什麼不'this.innerHTML'? – 2013-03-06 16:24:29

+0

非常感謝! =) – 2013-03-06 16:28:54

1

使用此...

$("button").on('click', function() { 
    valor = $(this).html(); 
    retorno = (valor == 'Exibir') ? 'Ocultar' : 'Exibir'; 
    $(this).html(retorno); 
}); 

參見本實施例中jsFiddle

2

this指HTMLElementNode(窗口)對象,並且不是jquery對象和爲html是一個jquery方法它將無法工作。

所以使它你需要用它周圍的$一個jQuery對象:

$("button").click(function() { 
    valor = $(this).html(); 
    retorno = (valor == 'Exibir') ? 'Ocultar' : 'Exibir'; 
    $(this).html(retorno); 
}); 
1

this將把一個HTMLElementNode,所以你可以做valor = this.innerHTML,避免了jQuery調用。

1
$("button").click(function() { 
    valor = $(this).html(); 
    retorno = (valor == 'Exibir') ? 'Ocultar' : 'Exibir'; 
    $(this).html(retorno); 
}); 
1

使用此:

valor = jQuery(this).html();