document.addEventListener('DOMContentLoaded', function() { const lambdaUrl = "https://zfciecyn426cde3eqwliyncaea0qvreo.lambda-url.ap-northeast-1.on.aws/"; // ハンバーガーメニューのトグル機能 const hamburger = document.getElementById('hamburger'); const navMenu = document.getElementById('navMenu'); if (hamburger && navMenu) { hamburger.addEventListener('click', () => { navMenu.classList.toggle('active'); }); } // フォームの送信をfetch APIで処理 const contactForm = document.getElementById('contactForm'); if (contactForm) { contactForm.addEventListener('submit', function(e) { e.preventDefault(); // デフォルトの送信をキャンセル // FormDataからプレーンなJavaScriptオブジェクトに変換 const formData = new FormData(contactForm); const object = {}; formData.forEach((value, key) => { object[key] = value; }); const json = JSON.stringify(object); const submitButton = contactForm.querySelector('button[type="submit"]'); // 送信ボタンを無効化して二重送信を防ぐ if(submitButton) { submitButton.disabled = true; submitButton.textContent = '送信中...'; } fetch(lambdaUrl, { method: 'POST', body: json, }) .then(response => { if (response.ok) { // 成功したらサンクスページにリダイレクト window.location.href = './html/contact_thanks.html'; } else { // サーバーからのエラーレスポンス alert('送信に失敗しました。恐れ入りますが再度お試しください。画面下部より LINE からのお問い合わせもご利用いただけます'); if(submitButton) { submitButton.disabled = false; submitButton.textContent = 'カウンセリングを申し込む'; // 元のテキストに戻す(実際のテキストに合わせてください) } } }) .catch(error => { console.error('送信エラー:', error); alert('送信に失敗しました。恐れ入りますが再度お試しください。画面下部より LINE からのお問い合わせもご利用いただけます'); if(submitButton) { submitButton.disabled = false; submitButton.textContent = 'カウンセリングを申し込む'; // 元のテキストに戻す(実際のテキストに合わせてください) } }); }); } // スクロール時のフェードインアニメーション const fadeInElements = document.querySelectorAll('.fade-in'); if (fadeInElements.length > 0) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); observer.unobserve(entry.target); // 一度表示したら監視を解除 } }); }, { threshold: 0.1 // 要素が10%見えたらトリガー }); fadeInElements.forEach(el => { observer.observe(el); }); } // フッターのコピーライト年を動的に設定 const copyrightElement = document.getElementById('copyright'); if (copyrightElement) { const currentYear = new Date().getFullYear(); copyrightElement.innerHTML = `© ${currentYear} ProgrammingCoach. All Rights Reserved.`; } });