Files
CSW-Gruppe-2/script.js
2025-11-12 13:22:01 +01:00

141 lines
4.9 KiB
JavaScript

document.addEventListener('DOMContentLoaded', function() {
const navLinks = document.querySelectorAll('nav a');
navLinks.forEach(link => {
link.addEventListener('click', function(e) {
e.preventDefault();
const targetId = this.getAttribute('href');
const targetSection = document.querySelector(targetId);
if (targetSection) {
targetSection.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
//Dark MOde
const darkModeBtn = document.getElementById('darkModeBtn');
if (darkModeBtn) {
if (localStorage.getItem('darkMode') === 'enabled') {
document.body.classList.add('dark-mode');
darkModeBtn.textContent = ' Light Mode';
}
darkModeBtn.addEventListener('click', function() {
document.body.classList.toggle('dark-mode');
if (document.body.classList.contains('dark-mode')) {
localStorage.setItem('darkMode', 'enabled');
darkModeBtn.textContent = ' Light Mode';
} else {
localStorage.setItem('darkMode', 'disabled');
darkModeBtn.textContent = ' Dark Mode';
}
});
}
//Them changer
const colorButtons = document.querySelectorAll('.color-btn');
colorButtons.forEach(button => {
button.addEventListener('click', function() {
const color = this.getAttribute('data-color');
const darkColor = this.getAttribute('data-color-dark');
document.documentElement.style.setProperty('--main-color', color);
document.documentElement.style.setProperty('--main-color-dark', darkColor);
localStorage.setItem('themeColor', color);
localStorage.setItem('themeColorDark', darkColor);
colorButtons.forEach(btn => btn.classList.remove('active'));
this.classList.add('active');
});
});
const savedColor = localStorage.getItem('themeColor');
const savedColorDark = localStorage.getItem('themeColorDark');
if (savedColor && savedColorDark) {
document.documentElement.style.setProperty('--main-color', savedColor);
document.documentElement.style.setProperty('--main-color-dark', savedColorDark);
colorButtons.forEach(btn => {
if (btn.getAttribute('data-color') === savedColor) {
btn.classList.add('active');
}
});
}
// Validation of FORM
const form = document.querySelector('#contact form');
if (form) {
const nameInput = form.querySelector('input[name="name"]');
const emailInput = form.querySelector('input[name="email"]');
const messageInput = form.querySelector('textarea[name="message"]');
nameInput.addEventListener('input', function() {
if (this.value.trim().length > 2) {
this.style.borderColor = '#4caf50';
} else {
this.style.borderColor = '#e0e0e0';
}
});
emailInput.addEventListener('input', function() {
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (emailPattern.test(this.value)) {
this.style.borderColor = '#4caf50';
} else {
this.style.borderColor = '#f44336';
}
});
messageInput.addEventListener('input', function() {
if (this.value.trim().length >= 10) {
this.style.borderColor = '#4caf50';
} else {
this.style.borderColor = '#e0e0e0';
}
});
form.addEventListener('submit', function(e) {
e.preventDefault();
const name = nameInput.value.trim();
const email = emailInput.value.trim();
const message = messageInput.value.trim();
if (name.length < 3) {
alert('Bitte geben Sie eine gültige E-Mail-Adresse ein!');
nameInput.focus();
return;
}
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailPattern.test(email)) {
alert('Der Name muss mindestens 3 Zeichen lang sein!');
emailInput.focus();
return;
}
if (message.length < 10) {
alert('Die Nachricht muss mindestens 10 Zeichen lang sein!');
messageInput.focus();
return;
}
alert('Vielen Dank, ' + name + '! Ihre Nachricht wurde gesendet.');
form.reset();
nameInput.style.borderColor = '#e0e0e0';
emailInput.style.borderColor = '#e0e0e0';
messageInput.style.borderColor = '#e0e0e0';
});
}
});