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

objet en javascript

6 réponses
Avatar
gewix
Bonjour,
quelqu'un pourrait il tester ce code qui chez moi retourne que les id
sont null.

Code ci-apr=E8s

<!-- DEBUT DUCODE -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html;
charset=3Diso-8859-15" />
<script type=3D"text/javascript" >
function SEL_T(nom_theme,id_kdo,url_img,num_sel_kdo)
{
this.nom =3D nom_theme
this.idkdo =3D id_kdo;
this.urlimg =3D url_img;

}

var topkdo =3D new SEL_T('Top
Kdo','500:120:524:395:121:69:37:349:437:248','20080919162613Souris
Revolution75.jpg::v_120.jpg::20080925183608masseur spirit
beaute75.jpg::v_395_269.jpg::v_121.jpg::v_69.jpg::v_37.jpg::v_349_496.jpg::=
v_437_630::v_248_98.jpg');
var hightech =3D new SEL_T('Kdos High
Tech','50::359::11::400::342::124::366::38::39::586','v_50.jpg::v_359_338.j=
pg::v_11.jpg::v_400_661.jpg::v_342_646.jpg::v_124.jpg::v_366_225.jpg::v_38.=
jpg::v_39.jpg::
20081106163912segway75.jpg');
var pourlui =3D new SEL_T('Kdos pour
Lui','533::115::309::144::123::335::38::22::585::579','20081002155410Lecteu=
r-
MP4-75.jpg::v_115.jpg::v_309_4.jpg::v_144.jpg::v_123.jpg::v_335_278.jpg::v_=
38.jpg::v_22.jpg::
20081106162615scooter electrique75.jpg::20081030173126location
yacht75.jpg');
var pourelle =3D new SEL_T('Kdos pour
Elle','91::93::110::92::35::575::523::26::151::200','v_91.jpg::v_93.jpg::v_=
110.jpg::v_92.jpg::v_35.jpg::v20081030165730Tel
Samsung Lolita Lempicka75.jpg::
20080925183103wellbox75.jpg::v_26.jpg::v_151.jpg::v_200_656.jpg');

addkdo =3D new Array;
addkdo[0] =3D topkdo;
addkdo[1] =3D hightech;
addkdo[2] =3D pourlui;
addkdo[3] =3D pourelle;


function isole(txt,num)
{
var REG =3D new RegExp("[::]+","g");
var tab =3D txt.split(REG);
return tab[num];
}

function putMyselection(num)
{
for(i=3D1;i<=3D10;i++)
{
document.getElementById("image_"+i).innerHTML =3D "<img src=3D
\"./"+isole(addkdo[num].urlimg,i-1)+"\" border=3D\"1\" />";
}
}
putMyselection("1");
</script>
<style type=3D"text/css">
#image_1,#image_2,#image_3,#image_4,#image_5,#image_6,#image_7,#image_8,#im=
age_9,#image_10
{border:1px solid #000; background:#eeeeee;}
#image_11{width:110px; border:1px solid #000000;}
</style>
</head>
<body>
<div id=3D"image_1">&nbsp;</div>
<div id=3D"image_2">&nbsp;</div>
<div id=3D"image_3">&nbsp;</div>
<div id=3D"image_4">&nbsp;</div>
<div id=3D"image_5">&nbsp;</div>
<div id=3D"image_6">&nbsp;</div>
<div id=3D"image_7">&nbsp;</div>
<div id=3D"image_8">&nbsp;</div>
<div id=3D"image_9">&nbsp;</div>
<div id=3D"image_10">&nbsp;</div>
</body>
</html>

<!-- FIN DU CODE -->

6 réponses

Avatar
Olivier Miakinen
Bonjour,

Quoique je ne réponde pas à ta question, je voudrais te signaler dans le
code un truc un peu bizarre. Avec un peu de chance, c'est là qu'il y a
un bug et sans le savoir cela répondra quand même à ta question...

Le 27/11/2008 18:13, gewix a écrit :

[...]
var topkdo = new SEL_T('Top
Kdo','500:120:524:395:121:69:37:349:437:248','20080919162613Souris
Revolution75.jpg::v_120.jpg::20080925183608masseur spirit
beaute75.jpg::v_395_269.jpg::v_121.jpg::v_69.jpg::v_37.jpg::v_349_496.jpg::v_437_630::v_248_98.jpg');
[...]
var REG = new RegExp("[::]+","g");
var tab = txt.split(REG);



À priori, répéter un caractère dans une classe de caractères d'une
RegExp ne sert strictement à rien.

Ainsi,
new RegExp("[::]+","g");
est en principe équivalent à
new RegExp("[:]+","g");

Par ailleurs, une classe d'un seul caractère est équivalente à ce même
caractère.

Et donc
new RegExp("[:]+","g");
est équivalent à
new RegExp(":+","g");

Là où je soupçonne éventuellement un bug, c'est que dans certains
moteurs d'expressions rationnelles la séquence [:quelquechose:] a un
sens particulier, par exemple [:lower:] ou [:digit:]. Je me demande
donc si ton [::], inhabituel, ne provoquerait pas un bug dans ton
navigateur.

Note : si tu cherches à séparer uniquement les éléments séparés par deux
deux-points, alors txt.split("::") suffit, sans avoir besoin de RegExp
du tout. Mais si tu veux pouvoir traiter les deux cas (un : et deux :)
alors je te conseille RegExp(":+") ou tout simplement /:+/ (d'après la
doc, le paramètre global est ignoré par la fonction split).

Cordialement,
--
Olivier Miakinen
Avatar
Pascal PONCET
gewix a écrit :
quelqu'un pourrait il tester ce code qui chez moi retourne que les id
sont null.

Code ci-après
putMyselection("1");



Bonjour,

Le code, placé dans le HEAD du document, s'exécute dès qu'il est chargé
et donc avant le chargement complet dudit document.

Du coup, les DIV n'étant pas encore créés dans l'arbre HTML, ils ne
peuvent être référencés.

Solution : demander l'exécution du script après le chargement complet du
document.

Comment : utiliser la gestion d'évènement "onload".

Exemple (à la place du code ci-dessus) :
window.onload = function() { putMyselection(1); }

Cordialement,
Pascal
Avatar
gewix
On 27 nov, 19:05, Pascal PONCET
wrote:
gewix a écrit :

> quelqu'un pourrait il tester ce code qui chez moi retourne que les id
> sont null.

> Code ci-après
>    putMyselection("1");

Bonjour,

Le code, placé dans le HEAD du document, s'exécute dès qu'il est ch argé
et donc avant le chargement complet dudit document.

Du coup, les DIV n'étant pas encore créés dans l'arbre HTML, ils ne
peuvent être référencés.

Solution : demander l'exécution du script après le chargement complet du
document.

Comment : utiliser la gestion d'évènement "onload".

Exemple (à la place du code ci-dessus) :
window.onload = function() { putMyselection(1); }

Cordialement,
Pascal



Chapot et hola hola hola bravo pour Pascal: je n'aurais jamais pensé
qu'il s'agisse de cela.
Je tiendrai compte désormais de ce facteur.

Epilogue, j'ai testé et cela fonctionne à merveille.
Avatar
Pierre Goiffon
Pascal PONCET wrote:
Le code, placé dans le HEAD du document, s'exécute dès qu'il est chargé
et donc avant le chargement complet dudit document.

Du coup, les DIV n'étant pas encore créés dans l'arbre HTML, ils ne
peuvent être référencés.

Solution : demander l'exécution du script après le chargement complet du
document.

Comment : utiliser la gestion d'évènement "onload".



Juste une petite remarque, onLoad est censé être déclenché une fois que
toutes les ressources de la page ont été finie d'être téléchargées... Il
y a plusieurs propositions de ci de là pour déclencher ses événements à
de meilleurs moments, chez YUI c'est onDOMReady
(http://developer.yahoo.com/yui/event/#ondomready), mais il y a pleins
d'autres implémentations...
Avatar
Pascal PONCET
Pierre Goiffon a écrit :
.................................................................... Il
y a plusieurs propositions de ci de là pour déclencher ses événements à
de meilleurs moments, chez YUI c'est onDOMReady
(http://developer.yahoo.com/yui/event/#ondomready), mais il y a pleins
d'autres implémentations...



Intéressant, mais au niveau des implémentations je n'en connais pas qui
soit prise en charge directement par le navigateur, du moins de façon
standard (c.a.d. non spécifique à un navigateur).
L'exemple donné en lien oblige à charger une lourde librairie.
Y a-t-il des solutions sans librairie et sans aiguillage complexe ?

Aussi, l'économie réalisée est surtout sensible s'il y a beaucoup
d'autres ressources à appeler, typiquement des images, voire du flash.

Or, je ne sais pas si je peux généraliser mais, dans mes développement,
à chaque fois qu'il y a un paquet de ressources liées, elles sont
appelées par un script parce qu'il y a plus ou moins une automatisation
ou une interaction à gérer.
Dans ce cas, le "onload" va très bien puisqu'on peut ordonnancer les
scripts.

Un partage d'expériences ?

Cordialement,
Pascal
Avatar
Pierre Goiffon
Pascal PONCET wrote:
Il y a plusieurs propositions de ci de là pour déclencher ses




>> événements à de meilleurs moments, chez YUI c'est onDOMReady

Intéressant, mais au niveau des implémentations je n'en connais pas qui
soit prise en charge directement par le navigateur



Non en effet.
Je viens de parcourir vite fait la recommandation HTML5 mais pas trouvé
d'équivalent ?

Aussi, l'économie réalisée est surtout sensible s'il y a beaucoup
d'autres ressources à appeler, typiquement des images, voire du flash.



C'est important par exemple pour des choses simples comme des contenus à
remplacer en JavaScript non intrusif. Exemple un tableau à transformer
en objet datatable avec tri et édition dynamique... Si on le fait en
onLoad l'utilisateur aura des surprises à l'affichage !