Apprenez JavaScript depuis les bases : histoire, syntaxe, DOM, événements et créez votre première application interactive !
Découvrez l'origine et l'évolution du langage qui a révolutionné le web.
Brendan Eich, programmeur chez Netscape, crée JavaScript en seulement 10 jours en mai 1995.
Objectif : créer un langage simple pour rendre les pages web interactives, accessible aux non-programmeurs.
Initialement appelé "Mocha", puis "LiveScript", il devient "JavaScript" par marketing : Java était populaire, mais JS n'a aucun lien technique avec Java !
Première standardisation officielle du langage
Expressions régulières, gestion d'erreurs (try/catch)
JavaScript devient essentiel pour les applications web
JavaScript côté serveur, révolution du développement
let/const, classes, modules, arrow functions
Nouvelles fonctionnalités chaque année (ES2016, ES2017...)
Web, mobile, desktop, serveur, IoT, IA
Comprenez les concepts fondamentaux pour commencer à programmer en JavaScript.
Langage de programmation interprété, principalement utilisé pour rendre les pages web interactives.
Placez vos scripts en fin de <body> pour que le HTML soit chargé avant l'exécution du JavaScript.
Maîtrisez les éléments fondamentaux de la syntaxe JavaScript.
Utilisez console.log() pour déboguer et afficher des valeurs dans la console du navigateur (F12).
Apprenez à manipuler les éléments HTML avec JavaScript.
Le DOM est une représentation structurée du document HTML que JavaScript peut lire et modifier. C'est l'interface entre votre code et la page web.
Utilisez querySelector() et querySelectorAll() : plus flexibles et modernes.
Rendez vos pages interactives en réagissant aux actions des utilisateurs.
click
- Clicdblclick
- Double-clicmouseover
- Survolmouseout
- Sortiemousedown
- Appuimouseup
- Relâchementkeydown
- Appui touchekeyup
- Relâchementkeypress
- Frappesubmit
- Envoichange
- Changementinput
- Saisiefocus
- Focusblur
- Perte focusCréez votre première application JavaScript complète avec HTML, CSS et interactions.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ma Première Calculatrice JavaScript</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Arial', sans-serif;
background: linear-gradient(135deg, #323330 0%, #1a1a1a 100%);
color: white;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
padding: 20px;
}
.calculator {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 20px;
padding: 30px;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
max-width: 400px;
width: 100%;
}
.calculator h1 {
text-align: center;
margin-bottom: 30px;
color: #f7df1e;
font-size: 2em;
}
.display {
background: #2d2d2d;
border: 2px solid #444;
border-radius: 10px;
padding: 20px;
margin-bottom: 20px;
text-align: right;
font-size: 24px;
font-family: monospace;
min-height: 60px;
display: flex;
align-items: center;
justify-content: flex-end;
color: #f7df1e;
}
.buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
}
button {
padding: 20px;
border: none;
border-radius: 10px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: all 0.2s ease;
background: #444;
color: white;
}
button:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
}
.operator { background: #ff9500 !important; }
.operator:hover { background: #ffad33 !important; }
.equals {
background: #f7df1e !important;
color: #323330 !important;
}
.equals:hover { background: #f9e84d !important; }
.clear { background: #f44336 !important; }
.clear:hover { background: #f66 !important; }
.info {
margin-top: 30px;
padding: 20px;
background: rgba(247, 223, 30, 0.1);
border-radius: 10px;
border: 1px solid rgba(247, 223, 30, 0.3);
}
.info h3 { color: #f7df1e; margin-bottom: 10px; }
.info ul { list-style: none; padding: 0; }
.info li {
padding: 5px 0;
font-size: 14px;
color: #ccc;
}
.info li::before {
content: "✓ ";
color: #4caf50;
font-weight: bold;
}
</style>
</head>
<body>
<div class="calculator">
<h1>Ma Calculatrice JS</h1>
<div class="display" id="display">0</div>
<div class="buttons">
<button class="clear" onclick="clearDisplay()">C</button>
<button onclick="deleteLast()">⌫</button>
<button class="operator" onclick="appendToDisplay('/')">/</button>
<button class="operator" onclick="appendToDisplay('*')">×</button>
<button onclick="appendToDisplay('7')">7</button>
<button onclick="appendToDisplay('8')">8</button>
<button onclick="appendToDisplay('9')">9</button>
<button class="operator" onclick="appendToDisplay('-')">-</button>
<button onclick="appendToDisplay('4')">4</button>
<button onclick="appendToDisplay('5')">5</button>
<button onclick="appendToDisplay('6')">6</button>
<button class="operator" onclick="appendToDisplay('+')">+</button>
<button onclick="appendToDisplay('1')">1</button>
<button onclick="appendToDisplay('2')">2</button>
<button onclick="appendToDisplay('3')">3</button>
<button class="equals" onclick="calculate()" style="grid-row: span 2;">=</button>
<button onclick="appendToDisplay('0')" style="grid-column: span 2;">0</button>
<button onclick="appendToDisplay('.')">.</button>
</div>
<div class="info">
<h3>Ce que j'ai appris :</h3>
<ul>
<li>Manipulation du DOM avec getElementById</li>
<li>Gestion d'événements avec onclick</li>
<li>Fonctions JavaScript personnalisées</li>
<li>Conditions if/else pour la logique</li>
<li>Gestion des erreurs avec try/catch</li>
<li>Intégration HTML/CSS/JavaScript</li>
</ul>
</div>
</div>
<script>
// Variables globales
let display = document.getElementById('display');
let currentInput = '0';
let shouldResetDisplay = false;
// Fonction pour afficher dans la calculatrice
function updateDisplay() {
display.textContent = currentInput;
}
// Ajouter un caractère à l'affichage
function appendToDisplay(value) {
if (shouldResetDisplay) {
currentInput = '';
shouldResetDisplay = false;
}
if (currentInput === '0' && value !== '.') {
currentInput = value;
} else {
currentInput += value;
}
updateDisplay();
}
// Effacer l'affichage
function clearDisplay() {
currentInput = '0';
updateDisplay();
}
// Supprimer le dernier caractère
function deleteLast() {
if (currentInput.length > 1) {
currentInput = currentInput.slice(0, -1);
} else {
currentInput = '0';
}
updateDisplay();
}
// Calculer le résultat
function calculate() {
try {
// Remplacer × par * pour l'évaluation
let expression = currentInput.replace(/×/g, '*');
// Évaluer l'expression
let result = eval(expression);
// Vérifier si le résultat est valide
if (isNaN(result) || !isFinite(result)) {
throw new Error('Calcul impossible');
}
// Arrondir le résultat si nécessaire
if (result.toString().length > 10) {
result = parseFloat(result.toPrecision(10));
}
currentInput = result.toString();
shouldResetDisplay = true;
} catch (error) {
currentInput = 'Erreur';
shouldResetDisplay = true;
}
updateDisplay();
}
// Gestion du clavier (bonus)
document.addEventListener('keydown', function(event) {
const key = event.key;
if ('0123456789.'.includes(key)) {
appendToDisplay(key);
} else if ('+-*/'.includes(key)) {
appendToDisplay(key === '*' ? '×' : key);
} else if (key === 'Enter' || key === '=') {
event.preventDefault();
calculate();
} else if (key === 'Escape' || key === 'c' || key === 'C') {
clearDisplay();
} else if (key === 'Backspace') {
deleteLast();
}
});
// Message de bienvenue dans la console
console.log('Calculatrice JavaScript chargée !');
console.log('Vous pouvez utiliser le clavier pour calculer');
console.log('Ouvrez les DevTools pour voir le code');
</script>
</body>
</html>
calculatrice.html
let, const, function, arrow functions
getElementById, textContent, addEventListener
onclick, keydown, event handling
if/else, try/catch, validation
try/catch, validation des entrées
Vous avez appris les concepts fondamentaux : variables, fonctions, DOM, événements. Il est temps d'aller plus loin !
1. Pratiquer avec plus de projets • 2. Apprendre les frameworks modernes • 3. Découvrir le JavaScript côté serveur • 4. Maîtriser les APIs web