11550 sujets

JavaScript, DOM et API Web HTML5

Bonsoir à tous. Voilà je suis en apprentissage en création de sites web et j'ai de multiples soucis dont un qui me casse la tête au sens propre depuis maintenant 3 heures Smiley smile

J'aimerai utiliser des fonction javascript sans pour autant les inclures dans mon code HTML.
j'ai pour cela mis mes fonctions dans un fichier nommé "fonction.js"
que j'appelle par cette ligne dans mon head :

<script src="fonction.js" language="javascript" type="text/javascript"></script>


Voici ma fonction qui cause le soucis(celle dans le fichier .js) :
function cache(id) {
var d = document.getElementById(id);

if (d) {
	var test = d.style.display;
	if (test == 'none')
		d.style.display='block';
	else
		d.style.display='none';
	}
}


Bon vous l'avez remarqué c'est une fonction qui fait apparaitre ou disparaitre des div dans mon menu, si je met cette fonction dans mon code html elle s'exécute parfaitement. Le soucis, si je met cette fonction en externe et que je l'appelle sa ne marche pas. Je doit l'appeler par un "onclick" qui est ici :


	<li name="reparer" onclick="cache('hidden')">(texte)</li>
		<div id="hidden" style="display:none;">
			<ul><li><a href="../page/carroserie.php">(texte)</a></li>
				<li><a href="../page/technique.php">(texte)</a></li>
			</ul>
		</div>


voilà, s'il vous plait, si vous pouviez m'aider et me dire pourquoi cela ne fonctionne pas de cette manière cela m'aiderait beaucoup.
Modifié par Hooli (13 May 2010 - 23:53)
Bonjour,

Il peut y avoir plusieurs causes à ton problème :
1- Le fichier HTML et le fichier JS ne se trouvent pas dans le même répertoire.
2- Une fonction portant un nom identique est déclarée après que la première soit incluse.
Hmm, mon fichier js et mon fichier html sont bien dans le même répertoire. Quand à la seconde solution, je ne vois pas trop précisément ce que tu entend par là, mais je doute que ce soit le cas :s

Merci pour ta réponse en tous cas.
Hooli a écrit :
Quand à la seconde solution, je ne vois pas trop précisément ce que tu entend par là, mais je doute que ce soit le cas :s
Par l'exemple, c'est beaucoup plus parlant. Imagine le code suivant :
function test(){
  alert("mon superbe test");
}
function test(){
  alert("mon magnifique test");
}
Dans ce cas, seule la seconde fonction sera appelée.

J'imagine que tu as vérifié l'orthographe de ton fichier, pour qu'elle corresponde bien à celle du fichier appelé par l'élément script. C'est une erreur bête, mais qui fait souvent perdre beaucoup de temps Smiley cligne

Serait-il possible d'avoir davantage de détails sur le code HTML que tu utilise ?
j'appelle cette fonction deux fois en effet mais elle ne prend pas le même paramètre est ce que c'est embêtant quand même ?

voici tout le contenu de ma page html :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<link rel="stylesheet" media="screen" type="text/css" title="Style 1" href="../bleu.css" /> 
<script src="fonction.js" language="javascript" type="text/javascript"></script>
</head>

<body>
<img src="../stylebleu/menu.jpg"/>
<ul>
	<li><a href="../page/accueil.php">Accueil</a></li>
	<li name="reparer" onclick="cache('hidden')">R&eacute;paration</li>
		<div id="hidden" style="display:none;">
			<ul><li><a href="../page/carroserie.php">Carroserie</a></li>
				<li><a href="../page/technique.php">Technique</a></li>
			</ul>
		</div>
	<li><a href="../page/location.php">Location</a></li>
	<li><a href="../page/contact.php">Contact</a></li>
</ul>

<img name="seconnecter" src="../stylebleu/seconnecter.png" onclick="cache('hidden1')"/>
	<div id="hidden1" style="display:none;">
		<form method="post" action="  ">
			<label for="login">Login :</label><br />
			<input type="text" name="login"> <br />
			<label for="mdp">Mot de passe : </label><br />
			<input type="password" name="mdp"><br />
		</form>
	</div>
</body>
</html>

Bonjour,


Non là c'est bon, ce sont juste des utilisations de la fonction ( on peut en faire tant qu'on veut ) Smiley smile

J'ai essayé le code et aucun problème, peut-être que ton navigateur n'aime pas avoir l'attribut language et type dans la balise script, sinon il n'y a que la possibilité d'un problème d'emplacement des fichiers mais tu dis qu'ils sont dans le même répertoire Smiley confus

Cordialement ^^