Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WB15] Passage d'une url comme variable à une fonction JS

5 réponses
Avatar
paratge
Bonjour à tous,

J' ai des lacunes en JavaScript qui m'empêchent d'avancer et je ne
trouve pas de réponse sur le net...

J'ai une fonction LoadFond() qui fonctionne très bien et se présente
comme ceci :

function LoadFond()
{
document.getElementById('A2').style.backgroundImage='url(../IMAGES/FOND/FOND_1.jpg)';
}

Je dois rendre cette fonction dynamique sous peine d'en créer
inutilement une trentaine d'autres.

donc je passe en variable l'alias de la cellule à impacter
(MaCellule..nom) ça a l'air de fonctionner, par contre l'url en variable
ne fonctionne pas parceque certainement, je ne la passe pas comme il faut.



j'ai créé une chaine

Machaine =
[
'url(../IMAGES/FOND/%1)'
]

que j'implémente grace à une ChaineConstruit(MaChaine, MonImage)

et je passe le tout ce qui donne :

function LoadFond(sCellule,sUrl)
{
document.getElementById(sCellule).style.backgroundImage=sUrl;
alert(sUrl);
}

alert() me renvoie bien l'url passée, mais pas d'image affichée.
Je suppose que ma manièrre de passer l'url n'est pas la bonne...

Si vous avez une piste...

Merci d'avance pour votre temps.

5 réponses

Avatar
paratge
Le 30/08/2012 09:54, paratge a écrit :


Question subsidiaire :

document.getElementById(sCellule).style.backgroundImage

peut-il recevoir un buffer ? (dans le cas d'images redimensionnées à la
volée )

Merci encore
Avatar
VA
Le 30/08/2012 09:54, paratge a écrit :
Bonjour à tous,

J' ai des lacunes en JavaScript qui m'empêchent d'avancer et je ne
trouve pas de réponse sur le net...

J'ai une fonction LoadFond() qui fonctionne très bien et se présente
comme ceci :

function LoadFond()
{
document.getElementById('A2').style.backgroundImage='url(../IMAGES/FOND/FOND_1.jpg)';

}

Je dois rendre cette fonction dynamique sous peine d'en créer
inutilement une trentaine d'autres.

donc je passe en variable l'alias de la cellule à impacter
(MaCellule..nom) ça a l'air de fonctionner, par contre l'url en variable
ne fonctionne pas parceque certainement, je ne la passe pas comme il faut.



j'ai créé une chaine

Machaine > [
'url(../IMAGES/FOND/%1)'
]

que j'implémente grace à une ChaineConstruit(MaChaine, MonImage)

et je passe le tout ce qui donne :

function LoadFond(sCellule,sUrl)
{
document.getElementById(sCellule).style.backgroundImage=sUrl;
alert(sUrl);
}

alert() me renvoie bien l'url passée, mais pas d'image affichée.
Je suppose que ma manièrre de passer l'url n'est pas la bonne...

Si vous avez une piste...

Merci d'avance pour votre temps.



De cette façon ça fonctionne dans une page HTML hors webdev

function LoadFond(sCellule,sUrl)
{

var obj = document.getElementById(sCellule);
obj.style.backgroundImage=sUrl;
}
Avatar
Roumégou Eric
VA avait écrit le 30/08/2012 :
Le 30/08/2012 09:54, paratge a écrit :
Bonjour à tous,

J' ai des lacunes en JavaScript qui m'empêchent d'avancer et je ne
trouve pas de réponse sur le net...

J'ai une fonction LoadFond() qui fonctionne très bien et se présente
comme ceci :

function LoadFond()
{
document.getElementById('A2').style.backgroundImage='url(../IMAGES/FOND/FOND_1.jpg)';

}

Je dois rendre cette fonction dynamique sous peine d'en créer
inutilement une trentaine d'autres.

donc je passe en variable l'alias de la cellule à impacter
(MaCellule..nom) ça a l'air de fonctionner, par contre l'url en variable
ne fonctionne pas parceque certainement, je ne la passe pas comme il faut.



j'ai créé une chaine

Machaine >> [
'url(../IMAGES/FOND/%1)'
]

que j'implémente grace à une ChaineConstruit(MaChaine, MonImage)

et je passe le tout ce qui donne :

function LoadFond(sCellule,sUrl)
{
document.getElementById(sCellule).style.backgroundImage=sUrl;
alert(sUrl);
}

alert() me renvoie bien l'url passée, mais pas d'image affichée.
Je suppose que ma manièrre de passer l'url n'est pas la bonne...

Si vous avez une piste...

Merci d'avance pour votre temps.



De cette façon ça fonctionne dans une page HTML hors webdev

function LoadFond(sCellule,sUrl)
{

var obj = document.getElementById(sCellule);
obj.style.backgroundImage=sUrl;
}



C'est du code Navigateur, donc il faut bien s'assurer que la variable
est dispo (et raffarichie).
Donc on passe par une variable écran cachée (pour sUrl)

un conseil : utiliser des noms de variables JS en majuscules et
décocher ds Webdev le fait qu'il renomme les variables.

Si l'info est obtenue depuis un code serveur, bien s'assurer que les
valeurs sont bien renvoyées au serveur (submit) ou passer par de
l'ajax.

voilà qq pistes ...

--
Eric Roumégou
Webmaster des wtabletes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
paratge
Le 31/08/2012 10:50, Roumégou Eric a écrit :
VA avait écrit le 30/08/2012 :
Le 30/08/2012 09:54, paratge a écrit :
Bonjour à tous,

J' ai des lacunes en JavaScript qui m'empêchent d'avancer et je ne
trouve pas de réponse sur le net...

J'ai une fonction LoadFond() qui fonctionne très bien et se présente
comme ceci :

function LoadFond()
{
document.getElementById('A2').style.backgroundImage='url(../IMAGES/FOND/FOND_1.jpg)';


}

Je dois rendre cette fonction dynamique sous peine d'en créer
inutilement une trentaine d'autres.

donc je passe en variable l'alias de la cellule à impacter
(MaCellule..nom) ça a l'air de fonctionner, par contre l'url en variable
ne fonctionne pas parceque certainement, je ne la passe pas comme il
faut.



j'ai créé une chaine

Machaine >>> [
'url(../IMAGES/FOND/%1)'
]

que j'implémente grace à une ChaineConstruit(MaChaine, MonImage)

et je passe le tout ce qui donne :

function LoadFond(sCellule,sUrl)
{
document.getElementById(sCellule).style.backgroundImage=sUrl;
alert(sUrl);
}

alert() me renvoie bien l'url passée, mais pas d'image affichée.
Je suppose que ma manièrre de passer l'url n'est pas la bonne...

Si vous avez une piste...

Merci d'avance pour votre temps.



De cette façon ça fonctionne dans une page HTML hors webdev

function LoadFond(sCellule,sUrl)
{

var obj = document.getElementById(sCellule);
obj.style.backgroundImage=sUrl;
}



C'est du code Navigateur, donc il faut bien s'assurer que la variable
est dispo (et raffarichie).
Donc on passe par une variable écran cachée (pour sUrl)

un conseil : utiliser des noms de variables JS en majuscules et décocher
ds Webdev le fait qu'il renomme les variables.

Si l'info est obtenue depuis un code serveur, bien s'assurer que les
valeurs sont bien renvoyées au serveur (submit) ou passer par de l'ajax.

voilà qq pistes ...




Merci Eric pour tes lumières

Je passe bien mon url maintenant, (je la construis directement dans ma
fonction js, MAIS, J'ai une autre lacune...
L'url que je construis, doit renvoyer une valeur, or, dans la code
source de ma page, j'ai l'url écrite en dur et pas la valeur renvoyée
par un ChaineAffiche()...

Le but de tout ceci est de pouvoir redimensionner à la volée des images
pour les afficher comme image de fond de cellules, donc j'ai créé une
page inspirée de la page flash.awp dans l'exemple catalogue internet qui
fonctionne très bien lorsque je saisis l'url, mais n'est pas appelée par
ma fonction puisque je retrouve l'url et non la valeur renvoyée dans le
code de ma page :(

Voici ma fonction :

function ChargeImages(nL,nH,nC)

{
var Img = "FOND_";
var Cell = "A";
var Url = 'flash.awp?fichier=';
var Largeur = '&largeur='+nL;
var Hauteur = '&hauteur='+nH;
var Couleur = '&couleur='+nC;
var sChemin
for (i=1; i<10; i++) {
sChemin = Url+i+Largeur+Hauteur+Couleur;
LoadFond(Cell+(i+1),sChemin);
}
}

et le code généré :

<table id="A2" style="background-image:
url(http://localhost/MONSITE_WEB/FR/redim.awp?fichier=1&amp;largeur37&amp;hauteur12&amp;couleur=#FFFFFF);
">
<tbody><tr><td height="150" width="150"
valign="top"></td></tr></tbody></table>

Toute piste me sera forcémment très utile.

Merci d'avance pour votre temps.
Avatar
Roumégou Eric
paratge a exprimé avec précision :
Le 31/08/2012 10:50, Roumégou Eric a écrit :
VA avait écrit le 30/08/2012 :
Le 30/08/2012 09:54, paratge a écrit :





Toute piste me sera forcémment très utile.

Merci d'avance pour votre temps.



Ok si je comprend bien ta page awp doit te renvoyer des valeurs , comme
un webservice en quelque sorte.

donc tu fais un httprequete puis un httpdonneresultat

mais effectivement il faut que ta page awp appelée affiche ses
résultats pour que tu puis les extraire.

essaie avec ce httprequete et debuggue ce que tu obtiens dans
httpdonneresultat et tu verras si c'est exploitable.

--
Eric Roumégou
Webmaster des wtabletes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)