OVH Cloud OVH Cloud

objet undefined

26 réponses
Avatar
J-F Portala
Bonjour,

Je voudrais que lors du chargement de ma page, un champ aie le focus.
avec
<body onload=foc();>

et
function foc()
{
document.form.nomchamp.focus() ;
}

Cela fonctionne.

Le probleme est que cette page affiche d'autres formulaires dans lesquels ce
champ n'existe pas.

J'ai essayé de transformer la fonction en

function foc()
{
if ( document.form.nomchamp != undefined )
document.form.nomchamp.focus() ;
}

J'ai un message d'erreur

document.form.nomchamp a la valeur null ou n'est pas un objet

Est ce qu'il existe un test permettant de verifier l'existence d'un objet

Merci de votre aide

10 réponses

1 2 3
Avatar
ASM
J'espère avoir été clair, sinon n'hésite pas à demander :)
--


Bien que ce soit tres clair, je dois rater quelque chose car cela ne
fonctionne pas chez moi.

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Title here!</title>
<SCRIPT LANGUAGE="javascript">
<!--
onLoad = function()


qu'est-ce que disais, hein ?

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
CrazyCat
ASM wrote:
onLoad = function()
qu'est-ce que disais, hein ?



prout! loool

Bon, ça va, de toutes manières je ne cause pas avec les gars sur mac :)

--
Astuces informatiques: http://www.crazycat.info
Tchattez en liberté: http://www.crazy-irc.net


Avatar
J-F Portala
merci pour votre aide.

La fonction fonctionne.
En revanche, dans certains cas, j'utilise certaines fonctions au chargement
(menus), dans d'autres cas, d'autres fonctions( focus sur formulaires).
(Je fais pas mal d'autosoumission avec des switch case en fcontion d'une
variable de l'url)

Je travaille principalement en PHP, ce qui fait qu'il était assez simple
pour moi de faire un test, puis de surcharger la balise onload pour charger
ou pas le menu.

Si je veux travailler de façon générale avec mon chargement de menu, il faut
que je crée une fonction générique, qui sera appelée si je ne charge pas de
menu.

If ( variable == menu_necessaire )
<body onload= "chargementmenu();">
else
<body onload= "fonction_a_definir_dans_chaque_page();">

Est ce que j'ai une autre solution d'après vous?
l'evenement onload me semblait pourtant bien sympathique.

Jeff
Avatar
CrazyCat
J-F Portala wrote:
If ( variable == menu_necessaire )
<body onload= "chargementmenu();">
else
<body onload= "fonction_a_definir_dans_chaque_page();">


De mon point de vue, totalement personnel, moins on complique une balise
et mieux c'est.
Je serais plutôt d'avis de travailler avec plusieurs fichiers de scripts
(au minimum deux) qui seraient appelés en fonction du contexte.
Cela peut se réaliser de deux manières différentes:

1) tu as des scripts qui doivent toujours être présents dans tes pages
et certains qui n'interviennent que sur des pages particulières, tu as
donc un fichier générique toujours appelé et un fichier que tu
n'appelles que de temps en temps, de la manière suivante:
if ($environnement == "morejs") {
echo "<script language="javascript"
src="./includes/morejs.js"></script>n";
}


2) tes scripts diffèrent d'une page à une autre, tu fais donc:
if ($environnement == "script1") {
echo "<script language="javascript"
src="./includes/scripts1.js"></script>n";
} else {
echo "<script language="javascript"
src="./includes/scripts2.js"></script>n";
}

Et bien entendu, il faut placer judicieusement le onload, c'est à dire
le mettre dans le fichier qui est chargé et qui est à même d'assurer que
toutes les fonctions intéressées soient présentes.
--
Astuces informatiques: http://www.crazycat.info
Tchattez en liberté: http://www.crazy-irc.net

Avatar
ASM

if ($environnement == "morejs") {
echo "<script language="javascript"
src="./includes/morejs.js"></script>n";
}


ben ... j'y connais pas grd' chose au PHP, mais si ça fonctionne tel que
c'est que le PHP a bien évolué depuis tantôt

if ($environnement == "morejs")
echo "<script type=""texte/javascript""
src="/mesJS/morejs.js"></script>n";

une autre façon plus simple (à mon idée) que le if else :

echo "<script type=""texte/javascript""
src=/"/mesJS/".$environnement.".js"></script>n";

Et bien entendu, il faut placer judicieusement le onload, c'est à dire
le mettre dans le fichier qui est chargé


Là il faut être plus clair : je ne vois plus de onload dans ta dernière
proposition.

et qui est à même d'assurer que
toutes les fonctions intéressées soient présentes.



--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Guy


function foc()
{
if ( document.form.nomchamp != undefined )
document.form.nomchamp.focus() ;
}

J'ai un message d'erreur

Bonjour,

il faut utiliser typeof(objet)
G

Avatar
YD
Est ce que j'ai une autre solution d'après vous?
l'evenement onload me semblait pourtant bien sympathique.


Il y a eu un échange sur onload et la possibilité d'ajouter
une seconde fonction à effectuer au chargement sans avoir à
modifier la balise body ou un script positionnant la balise
body il y a quelques mois. En voici la référence :

<http://groups.google.fr/group/fr.comp.lang.javascript/browse_thread/thread/f05009a2a40a4611/e9f9ea4f9e1d5d15>


--
Y.D.

Avatar
YD
Je me corrige :

Il y a eu un échange sur onload et la possibilité d'ajouter
une seconde fonction à effectuer au chargement sans avoir à
modifier la balise body ou un script /positionnant la balise
body/ il y a quelques mois. En voici la référence :


Lire /positionnant l'événement onload/.

<http://groups.google.fr/group/fr.comp.lang.javascript/browse_thread/thread/f05009a2a40a4611/e9f9ea4f9e1d5d15>



--
Y.D.

Avatar
CrazyCat
ASM wrote:
if ($environnement == "morejs") {
echo "<script language="javascript"
src="./includes/morejs.js"></script>n";
}
ben ... j'y connais pas grd' chose au PHP, mais si ça fonctionne tel que

c'est que le PHP a bien évolué depuis tantôt
if ($environnement == "morejs")
echo "<script type=""texte/javascript""
src="/mesJS/morejs.js"></script>n";


Merci stéphane, j'étais un peu à l'ouest... bien entendu qu'il faut
échapper les " :)

Là il faut être plus clair : je ne vois plus de onload dans ta dernière
proposition.


Le onload étant dans le fichier de scripts, cela coule de source (je le
considère comme une fonction propre au fichier)

D'ailleurs, je tiens à signaler un système encore plus simple pour
intégrer des fichiers javascript à la volée sans s'y perdre, même si ce
n'est pas propre du tout...
Pour chacune de mes pages (aaa.php, bbb.php, ...) je crée un fichier
javascript qui lui est propre (aaa.php.js, bbb.php.js) *si* j'en ai
besoin, et dans mes headers génériques (j'ai déjà dit que j'étais
feignant?) je fais:
<?
if (file_exists(basename($PHP_SELF).".js")) {
echo "<script language="javascript"
src="basename($PHP_SELF).".js"."></script>n";
}
?>

--
Astuces informatiques: http://www.crazycat.info
Tchattez en liberté: http://www.crazy-irc.net


Avatar
ASM

Merci stéphane,


Attention !
j'ai toujours un Mac
risque de contation !

j'étais un peu à l'ouest... bien entendu qu'il faut
échapper les " :)


et essayer de faire mieux que ce que j'ai pu proposer (plein d'erreurs
aussi)

feignant?) je fais:
<?
if (file_exists(basename($PHP_SELF).".js")) {
echo "<script language="javascript"
src="basename($PHP_SELF).".js"."></script>n";
}
?>


Ha oui, pas mal.

profites-en pour corriger

language="javascript"
par
type="text/javascript"


--
Stephane Moriaux et son [moins] vieux Mac

1 2 3