Je ne peut malheuresement pas te montrer la page concerné, mais voici les fonction posant problème :
validDiapo() est appelée au clic sur un bouton , son but est de placer une image dans un div (après traitement ajax) puis de générer le div suivant (des cadres blanc qui se suivent et qui sont remplis au fur et à mesure).
clickVign() permet de selectionner un div et de lui appliquer une bordure (pour illustrer la selection)
Deletedclicked() est là pour supprimer le div cliqué.
function validDiapo(modele,bandeau,caseid,curDiapo)
{
if(caseid=="")
{
caseid = 1;
}
param='modele='+modele+'&bandeau='+bandeau;
url='ajax/ajax_validDiapo.php';
// Affichage de l'image
new Ajax.Updater(
{success : 'vignette-'+curDiapo, failure : 'erreur'},
url,
{ parameters : param,
evalScripts : true ,
method : 'post',
onLoading: loading,
onComplete: loading
}
);
// Déclaration du div père
var conteneur = document.getElementById('lesvignettes');
caseidNext = caseid + 1;
nextDiapo = curDiapo+1;
//Création de l'image
var imageDiv = document.createElement("img");
imageDiv.src = 'images/fleche_pres.gif';
conteneur.appendChild(imageDiv);
imageDiv.setAttribute("id","image-"+nextDiapo);
imageDiv.className='floatL';
// Retour à la ligne si 5 vignette afficher
if(nextDiapo==6 || nextDiapo==11 || nextDiapo==17)
{
var clearDiv = document.createElement("div");
conteneur.appendChild(clearDiv);
clearDiv.className = 'clearB';
}
// Création de la prochaine vignette
var vignetteDiv = document.createElement("div");
// Création du div
conteneur.appendChild(vignetteDiv);
vignetteDiv.setAttribute("id","vignette-"+nextDiapo);
if(vignetteDiv.addEventListener)
vignetteDiv.addEventListener("click",clickVign,false);
else
vignetteDiv.attachEvent("onclick",clickVign);
vignetteDiv.className = 'vignette';
}
var selectedVignette = -1;
function clickVign(event)
{
cible = event.target || window.event.srcElement;
//alert(cible.id);
var vignette = $("vignette-"+cible.id);
var classe = vignette.className;
//alert(id);
if(classe == 'vignette')
vignette.className = 'vignetteClick';
else
vignette.className = 'vignette';
selectedVignette = id; // id à définir en fct de cible.id
//alert(classe);
//alert(selectedVignette);
}
function deleteClicked()
{
if(selectedVignette==-1)
{
alert("Vous devez d'abord sélectionner une vignette");
}
else
{
var vignette = $("vignette-"+selectedVignette);
vignette.className = 'vignette';
razDiapoSelec(selectedVignette);
}
selectedVignette = -1;
}
Si j'utilise setAttribute , aucun soucis, mais quand je veux rendre tout celà compatible c'est là qu'est le problème. le paramettre passer dans l'évènement onclick est un chiffre commenceant à 1 e tpouvant aller très loin ^^.
Quand j'utilise les methode AttachEvent et AddEvent... seul le dernier Div est "selectioné" (application d'une bordure) et ce quelque soit le div cliqué.
Pour illustrer ce que je dis voici une image de l'interface :
http://img134.imageshack.us/img134/6528/demoku4.gif
Quand je clique sur la dernière vignette j'ai bien son id , mais lorsque je clique sur les autres l'alert est vide
PS : pour les fonction "exotique' c'est du prototype
Modifié par grunky (18 Oct 2007 - 13:58)