| |
|
|
| function toggleMenu() {
|
| const mobileNav = document.querySelector('.mobile-nav');
|
| mobileNav.classList.toggle('active');
|
| }
|
|
|
|
|
| function closeMenuOnScroll() {
|
| const mobileNav = document.querySelector('.mobile-nav');
|
| if (mobileNav.classList.contains('active')) {
|
| mobileNav.classList.remove('active');
|
| }
|
| }
|
|
|
|
|
| window.addEventListener('scroll', closeMenuOnScroll);
|
|
|
|
|
|
|
| function showTool(toolId) {
|
|
|
| document.querySelectorAll('.tool-container').forEach((tool) => {
|
| tool.style.display = 'none';
|
| tool.classList.remove('active');
|
| });
|
|
|
|
|
| const selectedTool = document.getElementById(toolId);
|
| if (selectedTool) {
|
| selectedTool.style.display = 'block';
|
| selectedTool.classList.add('active');
|
| } else {
|
| console.error(`No tool found with ID: ${toolId}`);
|
| }
|
| }
|
|
|
|
|
| document.addEventListener('DOMContentLoaded', () => {
|
| const toolButtons = document.querySelectorAll('[data-tool-id]');
|
|
|
| toolButtons.forEach((button) => {
|
| button.addEventListener('click', (event) => {
|
| const toolId = event.target.getAttribute('data-tool-id');
|
| showTool(toolId);
|
| });
|
| });
|
| });
|
|
|
|
|
| function convertYarn() {
|
| const amount = parseFloat(document.getElementById('yards').value);
|
| const originalWeight = parseInt(document.getElementById('original-yarn-weight').value, 10);
|
| const desiredWeight = parseInt(document.getElementById('desired-yarn-weight').value, 10);
|
| const unit = document.querySelector('input[name="unit"]:checked').value;
|
|
|
| const conversionFactors = {
|
| yards: [2.0, 1.8, 1.6, 1.4, 1.0, 0.8, 0.6, 0.4],
|
| meters: [1.8, 1.6, 1.4, 1.2, 1.0, 0.7, 0.5, 0.4],
|
| };
|
|
|
| if (isNaN(amount)) {
|
| document.getElementById('converter-result').innerText = "Please enter a valid amount.";
|
| return;
|
| }
|
|
|
| const originalFactor = conversionFactors[unit][originalWeight];
|
| const desiredFactor = conversionFactors[unit][desiredWeight];
|
| const adjustedAmount = ((amount / originalFactor) * desiredFactor).toFixed(2);
|
|
|
| document.getElementById('converter-result').innerText =
|
| `You will need approximately ${adjustedAmount} ${unit} of the desired weight.`;
|
| }
|
|
|
|
|
| function findHookSize() {
|
| const weight = parseInt(document.getElementById('hook-yarn-weight').value, 10);
|
| const sizes = {
|
| 0: { hook: '6-8 (Steel)', needle: '000-1', uses: 'Shawls, wraps, lace projects' },
|
| 1: { hook: 'B-1 to E-4', needle: '1-3', uses: 'Socks, baby clothes, light garments' },
|
| 2: { hook: 'E-4 to F-5', needle: '3-5', uses: 'Light tops, baby clothes' },
|
| 3: { hook: 'G-6 to 7', needle: '5-7', uses: 'Cardigans, lightweight sweaters' },
|
| 4: { hook: 'I-9 to K-10.5', needle: '7-9', uses: 'Blankets, sweaters, hats' },
|
| 5: { hook: 'K-10.5 to M-13', needle: '9-11', uses: 'Thick blankets, chunky sweaters' },
|
| 6: { hook: 'M-13 to Q', needle: '11-17', uses: 'Heavy winter accessories' },
|
| 7: { hook: 'Q+', needle: '17+', uses: 'Arm knitting, oversized blankets' },
|
| };
|
|
|
| const selected = sizes[weight];
|
| if (selected) {
|
| document.getElementById('sizer-result').innerText =
|
| `Hook: ${selected.hook}, Needle: ${selected.needle}. Best Uses: ${selected.uses}`;
|
| } else {
|
| document.getElementById('sizer-result').innerText = 'Unknown size selected.';
|
| }
|
| }
|
|
|
|
|
| |
| |
Comments