IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Navigation responsive javascript


Sujet :

JavaScript

  1. #1
    Membre averti
    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Janvier 2014
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 31
    Par d�faut Navigation responsive javascript
    Bonsoir,
    je debutte avec javascript et je suis entrain de realiser une navigation responsive pour les appareils mobile et j'ai suivi ce tutoriel

    http://toddmotto.com/building-an-htm...es-javascript/
    mon probl�me et que j'aimerai bien s�par� le script dans un fichier externe au lieu de le mettre dans une balise <script></script> et puis je fais l'appel de ce dernier dans ma page html comme suit
    <script type="text/javascript" src="script.js"></script>
    mais rien ne ce passe lors de l'execution malgr� �a marche bien si je met le script au niveau de ma page html.voici le code

    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <!doctype html>
    <html>
    <head>
    	<link href="css/main.css" rel="stylesheet">
    	<link href="css/demo.css" rel="stylesheet">
    </head>
    <body>
    	<!-- Nav -->
    	<nav class="nav">
    		<ul class="nav-list">
    			<li class="nav-item"><a href="#">Home</a></li>
    			<li class="nav-item"><a href="#">About</a></li>
    			<li class="nav-item"><a href="#">Services</a></li>
    			<li class="nav-item"><a href="#">Portfolio</a></li>
    			<li class="nav-item"><a href="#">Testimonials</a></li>
    			<li class="nav-item"><a href="#">Contact</a></li>
    		</ul>
    	</nav>
    	<!-- /Nav -->
    </body>
    </html>
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    (function () {
    	// Create mobile element
    	var mobile = document.createElement('div');
    	mobile.className = 'nav-mobile';
    	document.querySelector('.nav').appendChild(mobile);
    	// hasClass
    	function hasClass(elem, className) {
    		return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' ');
    	}
    	// toggleClass
    	function toggleClass(elem, className) {
    		var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' ';
    		if (hasClass(elem, className)) {
    		    while (newClass.indexOf(' ' + className + ' ') >= 0) {
    		        newClass = newClass.replace(' ' + className + ' ', ' ');
    		    }
    		    elem.className = newClass.replace(/^\s+|\s+$/g, '');
    		} else {
    		    elem.className += ' ' + className;
    		}
    	}
    	// Mobile nav function
    	var mobileNav = document.querySelector('.nav-mobile');
    	var toggle = document.querySelector('.nav-list');
    	mobileNav.onclick = function () {
    		toggleClass(this, 'nav-mobile-open');
    		toggleClass(toggle, 'nav-active');
    	};
    })();

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Tu as bien laiss� la balise script au m�me endroit, apr�s ton HTML ?

  3. #3
    Membre averti
    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Janvier 2014
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 31
    Par d�faut
    j'ai mis la balise script dans la section head

  4. #4
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Il ne faut pas.
    Si tu sais � quoi correspond la syntaxe (function () {...})(); (IIFE), tu sais alors que le code sera imm�diatement ex�cut�, donc avant que le DOM ne soit cr��. C'est pourquoi Sylvain t'indiquais de mettre la balise apr�s le HTML.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  5. #5
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Tu peux la laisser dans la HEAD, � condition de changer ton code de cette mani�re :

    remplacer
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    (function () {
    ...
    })();
    par :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    document.addEventListener('DOMContentLoaded', function() {
    ...
    });
    De cette mani�re, la fonction ne sera plus imm�diatement invoqu�e mais attendra que le DOM est charg�. Mais le mieux reste de mettre tes scripts juste avant la fin de la balise </body>.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo