2013-03-06 3 views
1

J'essaie de créer un bouton qui change sa valeur quand il est pressé.bouton changer le nom lorsque vous appuyez sur

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

Je vais avoir ce message:

Uncaught TypeError: Object # n'a pas de méthode 'html'

Je vous remercie de toute aide.

+1

C'est beaucoup de ... – Quentin

+2

Comme GLOBALS Quentin fait allusion - vous polluez l'espace global en ne déclarant pas vos variables comme local dans votre fonction. Ajoutez "var" avant ces déclinaisons pour les rendre locales. –

+0

Merci à tous pour les explications sur les globals. Je ne le savais pas. –

Répondre

1

Essayez cette

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

this est un objet HTMLElementNode, pas un objet jQuery.

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

Pourquoi pas «this.innerHTML»? –

+0

Merci beaucoup! =) –

1

Utilisez cette ...

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

Voir cet exemple jsFiddle

2

this fait référence à l'objet HTMLElementNode (fenêtre) et n'est pas un objet jquery et comme html est une méthode jquery il ne fonctionnera pas.

Donc, pour en faire un objet jquery vous avez besoin d'envelopper le $ autour:

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

this se référera à un HTMLElementNode, pour que vous puissiez faire valor = this.innerHTML et éviter l'appel jQuery.

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

Utilisez ceci:

valor = jQuery(this).html(); 
Questions connexes