garath_ | Bonjour,
Je suis assez debutant en javascript, mais malgré cela je me suis bien documenté sur les causes de mon problème et je ne vois pas d'où ça vient.
Je cherche à redimensionner une image à la volée.
Pour cela j'utilise ce script:
Code :
- document.getElementById('suivante').onclick = function suivante() {
- numero += 1;
- if (numero == lien_image.length + 1) numero = 1;
- document.getElementById("image_prod" ).setAttribute("style", "visibility:hidden;" ); //cache image actuellement affichee
- document.getElementById("image_prod" ).setAttribute("width", "" ); //redonne la largeur d'origine
- document.getElementById("image_prod" ).setAttribute("height", "" ); // redonne la hauteur d'origine
- document.getElementById("image_prod" ).setAttribute("src", lien_image[numero]); //remplace l'image actuelle par la suivante
- redim_image(lien_image[numero]); //fonction de redimensionnement de l'image
- document.getElementById("image_prod" ).setAttribute("style", "" ); //affiche la nouvelle image redimensionnée
- document.getElementById("numero" ).value = numero;
- }
|
La fonction redim_image:
Code :
- function redim_image(url){
- var image = new Image();
- image.src = url;
- var h = image.height;
- var w = image.width;
- var dW = 0;
- var dH = 0;
- document.getElementById("lien_image_prod" ).value = url;
- // Si la largeur ou la hauteur depasse la taille maximale
- if ((h >= 110) || (w >= 230)) {
- // Si la largeur et la hauteur depasse la taille maximale
- if ((h >= 110) && (w >= 230)) {
- dH = 110;
- // On recalcule la taille proportionnellement
- dW = parseInt((w * dH) / h, 10);
- document.getElementById("image_prod" ).setAttribute("width", dW);
- }
- else if ((h > 150) && (w < 230)) {
- // Si la hauteur depasse la taille maximale
- dH = 110;
- // On recalcule la taille proportionnellement
- dW = parseInt((w * dH) / h, 10);
- document.getElementById("image_prod" ).setAttribute("width", dW);
- }
- else if ((h < 110) && (w > 230)) {
- // Si la largeur depasse la taille maximale
- dW = 230;
- // On recalcule la taille proportionnellement
- dH = parseInt((h * dW) / w, 10);
- document.getElementById("image_prod" ).setAttribute("height", dH);
- }
- }
|
Il s'agit d'une visionneuse d'image et, je sais, mon code est assez "bourrin", mais je débute, je le repete .
Mon problème c'est que parfois ma fonction redim_image voit comme comme valeur de hauteur et de largeur 0.
Du coup elle ne redimensionne pas et donc l'image non redimensionnée apparait (forcement... ).
Aucune idée d'où ça peut venir car lorsque j'execute en pas à pas avec firebug tout se passe bien.
C'est comme si javascript executait des instructions avant que ma fonction redim_image soit terminée...
Toute aide serait bienvenue . |