Partage
  • Partager sur Facebook
  • Partager sur Twitter

Code qui ne fonctionne que une image sur deux

Ca marche - ça ne marche pas - ça marche - ça ne marche pas

    7 août 2009 à 10:56:06

    Bonjour,

    Sur http://www.scouts-saint-benoit.org/articles/articles.php?id=618, on constate que une image sur deux change quand on la survole
    Pourquoi ?

    var timer;
    var xOpacity = 0;
    var i = 0;
    var j=0;
    var obj;
    var array = new Array();
    timer = setInterval("iniImg()", 1000);
    var apparu = false;
    function iniImg ()
    {
    	clearInterval(timer);
    	var haut = document.getElementById("haut");
    	array = haut.getElementsByTagName("img");
    	for(i=0;i<array.length;i++)
    	{
    		array[i].style.width = "auto";
    		var texte = document.createElement("div");
    		
    		var idName = "id"+i;
    		texte.setAttribute("id", idName);
    		
    		var idImg = "img"+i;
    		array[i].setAttribute("id", idImg);
    		
    		if(document.all) 
    		{
    			// array[i].attachEvent("onmouseover",function(){ apparaitre(this) });
    			// array[i].attachEvent("onmouseout",function(){ disparaitre(this) });
    			
    			texte.attachEvent("onmouseover",function(){ apparaitre(this) });
    			texte.attachEvent("onmouseout",function(){ disparaitre(this) });
    			texte.cssText("style", "height: "+array[i].offsetHeight+"px; width: "+array[i].offsetWidth+"px; margin-top: -"+array[i].offsetWidth+"px; z-index: "+eval(array[i].zIndex+1)+";");
    			array[i].cssText("style", "z-index: 1;");
    		}
    		else 
    		{
    			texte.addEventListener("mouseover",function(){  apparaitre(this) },true);
    			texte.addEventListener("mouseout",function(){ disparaitre(this) },true);
    			texte.setAttribute("style", "height: "+array[i].offsetHeight+"px; width: "+array[i].offsetWidth+"px; margin-top: -"+array[i].offsetHeight+"px; z-index: 10;");
    			array[i].setAttribute("style", "z-index: 1;");
    
    		}
    		
    		texte.className = "titre";
    		texte.appendChild(document.createTextNode(array[i].alt));
    		
    		var caseN = document.createElement("div");
    		caseN.className = "case";
    		if(document.all) 
    		{
    			caseN.cssText("style", "height: "+array[i].offsetHeight+"px; width: "+array[i].offsetWidth+"px;");
    		}
    		else 
    		{
    			caseN.setAttribute("style", "height: "+array[i].offsetHeight+"px; width: auto;");
    		}
    		
    		var imageDiv = document.createElement("div");
    		if(document.all) 
    		{
    			imageDiv.cssText("style", "height: "+array[i].offsetHeight+"px; width: "+array[i].offsetWidth+"px; background: url(\'"+array[i].src+"\');");
    		}
    		else 
    		{
    			imageDiv.setAttribute("style", "height: "+array[i].offsetHeight+"px; width: "+array[i].offsetWidth+"px; background: url(\'"+array[i].src+"\');");
    		}
    		
    
    		var parent = array[i].parentNode;
    		caseN.appendChild(array[i]);
    		caseN.innerHTML = "";
    		caseN.appendChild(imageDiv);
    		caseN.appendChild(texte);
    		parent.appendChild(caseN);	
    	}
    }
    function disparaitre(id)
    {
    	clearInterval(timer);
    	xOpacity = 0;
    	obj = id;
    	apparu = false;
    	obj.style.opacity = xOpacity;
    	obj.style.MozOpacity = xOpacity;
    	obj.style.KHTMLOpacity = xOpacity;
    	obj.style.filter = 'alpha(opacity=' + (xOpacity*100) + ')';
    }
    
    function visible ()
    {
    	if(xOpacity>0.9)
    	{
    		clearInterval(timer);
    	}
    	xOpacity += 0.1;
    	obj.style.opacity = xOpacity;
    	obj.style.MozOpacity = xOpacity;
    	obj.style.KHTMLOpacity = xOpacity;
    	obj.style.filter = 'alpha(opacity=' + (xOpacity*100) + ')';
    
    }
    function apparaitre(id)
    {
    	if(apparu == false)
    	{
    	obj = id;
    	clearInterval(timer);
    	xOpacity = 0;
    	apparu = true;
    	timer = setInterval("visible(obj)", 50);
    	}
    }
    


    Merci de votre aide.

    Si vous voulez que je vous l'explique brièvement, dites le moi.
    • Partager sur Facebook
    • Partager sur Twitter
      7 août 2009 à 11:59:58

      Pourquoi t'as des antislashs dans tes filters? x_x
      • Partager sur Facebook
      • Partager sur Twitter
        7 août 2009 à 12:03:27

        Parce qu'en fait, je suis dans un script php. Mais je retire les \ tout de suite.

        J'ai changé le code. Maintenant, ça marche, mais pour une image sur deux. Je trouve ça assez illogique. Même carrément pas normale !

        Tu peux m'aider stp ?
        • Partager sur Facebook
        • Partager sur Twitter

        Code qui ne fonctionne que une image sur deux

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown