11521 sujets

JavaScript, DOM et API Web HTML5

Hello tout le monde !

Je bute sur quelque chose de bête et j'ai l'impression d'avoir un problème de logique... Je cherche à changer mon texte au click sur une div.

C'est simple mais je merde Smiley langue !!! En fait ça marche une fois et POUF ! Et pas d'erreur dans la console. Du coup j'ai du mal comprendre un truc.

Pourriez vous m'aidez à comprendre ce qui cloche?



    var buttonvalue = true;
    
    if(buttonvalue == true){
    $('#show-more').on('click', function(){
            $('#show-more>button>span').text('Moins -')});
            buttonvalue = false;
    }else{
    $('#show-more').on('click', function(){
            $('#show-more>button>span').text('Plus +')});
            buttonvalue = true;
    }



Je vous remercie par avance et je vous souhaite à tous un excellent réveillon Smiley ola !!
Bonjour,

Ça aide toujours de poster le HTML en utilisant jsfiddle, par exemple.

Je vais essayer d'aider.

Peut-être qu'il faudrait mettre la condition à l'intérieur de la fonction anonyme. La tu dis, si la variable est vrai, alors lorsque je clique sur la div , la variable devient fausse. Sinon, lorsque je clique sur la div, la variable est vrai, du coup j'ai l'impression que ta variable vaut toujours vrai et donc le texte ne changera qu'une seule fois.

Qu'est que tu essaies de faire exactement, précisément?
Je ne suis pas au point en javascript mais j'ai cru comprendre que la portée des variables dans une condition faisait partie d'un problème de ce language, c'est pour cela que la nouvelle syntaxe du language, ECMAScript 2015, a introduit de nouveaux types de variables, notamment pour ce qui vous concerne : let.

Sinon, puisque vous utilisez jQuery, vous pouvez utiliser avec avantage la fonction .toggle().
Modifié par Olivier C (01 Jan 2017 - 10:29)
Au pif un truc du genre ?

var buttonvalue = true;

$('#show-more').on('click', function(){
	$('#show-more>button>span').text(
		(buttonvalue) ? 'Moins -' : 'Plus +'
	)});
	buttonvalue = !buttonvalue;
}