11499 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

voici les étapes de ce que j'arrive à faire (j'explique le souci par la suite) :

- J'ai un DIV et, en double-cliquant dessus, j'ajoute un textarea dans le DIV en mettant le contenu du DIV dans le textarea.
- Je modifie le contenu de mon textarea
- En cliquant à l'extérieur de mon textarea, celui-ci disparaît et mon nouveau contenu se place dans mon DIV (grâce notamment à la page traitement.php qui effectue d'autres choses).

Voici le code :


$('div.resultat').dblclick(function(){
  if(!$(this).children("textarea").length) {
    $(this).html(function(){
      return '<textarea cols="60" rows="1" class="Textarea" >' + $(this).html() + '</textarea>';
    });
    $(this).children("textarea").focus();
  }
});
 
$('div.resultat').focusout(null,function(){

var texte = $(this).children('textarea').val();

$.post('traitement.php', {'texte':texte }, function(data) {
          finFonction(data);
        }, 'json');


function finFonction(data)
{
	$('textarea.Textarea').remove();
	$('div.resultat').html(data.a);
	$('div.question').html(data.b);
}					
});


Le code comme présenté ici fonctionne. Mais si j'ai plusieurs DIV qui ont class="resultat", les nouvelles valeurs data.a seront affectées à toutes mes div.resultat. Or, je souhaite que seule le DIV sur lequel je travaille soit affecté.

Donc je change ainsi :

function finFonction(data)
{
	$('textarea.Textarea').remove();
	$(this).html(data.a);
	$('div.question').html(data.b);
}					
});

Mais là ça ne m'affiche plus rien, et aucun message d'erreur. Le DIV existe toujours mais est vide.

De même si je récupère l'ID unique de mon DIV plus haut en le mettant dans une variable comme ça :

var id = 'div#' + $(this).attr('id');


Et en le mettant ainsi :

function finFonction(data)
{
	$('textarea.Textarea').remove();
	$(id).html(data.a);
	$('div.question').html(data.b);
}					
});

Même résultat, j'obtiens un DIV vide.

Mais si j'écris comme cela, ça fonctionne :

function finFonction(data)
{
	$('textarea.Textarea').remove();
	$('div#premierId').html(data.a);
	$('div.question').html(data.b);
}					
});


Je n'ai pas l'impression de mal faire les choses pourtant. D'où peut venir le problème ?

Maxime
Modifié par lofo7 (12 Nov 2013 - 17:40)
quand tu utilise :
var id = 'div#' + $(this).attr('id');

ta variable ne s'applique qu'a ta fonction en question, il faut doncv que tu retourne cette valeur de façon à pouvoir l'exploiter dans une autre fonction ...
Rhola quel idiot il suffisait juste que je déclare une variable globale. J'étais tellement la tête dedans que je ne l'avais pas vu.

Merci de ton aide !