Unit Converter - Code Explanation
HTML STRUCTURE
<div class="category-buttons">
<button class="category-btn active" onclick="switchCategory('length')">Length</button>
<button class="category-btn" onclick="switchCategory('weight')">Weight</button>
<button class="category-btn" onclick="switchCategory('temperature')">Temperature</button>
<button class="category-btn" onclick="switchCategory('volume')">Volume</button>
</div>
<div class="converter-box">
<input type="number" id="inputValue" placeholder="Enter value" oninput="convert()">
<select id="fromUnit" onchange="convert()"></select>
<select id="toUnit" onchange="convert()"></select>
<div class="result-value" id="result">0</div>
</div>
JAVASCRIPT CODE
const conversions = {
length: {
units: ['Meter', 'Kilometer', 'Mile', 'Yard', 'Foot', 'Inch'],
factors: [1, 0.001, 0.000621371, 1.09361, 3.28084, 39.3701]
},
weight: {
units: ['Kilogram', 'Gram', 'Pound', 'Ounce', 'Ton'],
factors: [1, 1000, 2.20462, 35.274, 0.001]
}
};
function switchCategory(category) {
currentCategory = category;
document.querySelectorAll('.category-btn').forEach(btn => btn.classList.remove('active'));
event.target.classList.add('active');
populateUnits();
convert();
}
function populateUnits() {
const conversion = conversions[currentCategory];
const fromUnit = document.getElementById('fromUnit');
const toUnit = document.getElementById('toUnit');
fromUnit.innerHTML = '';
toUnit.innerHTML = '';
conversion.units.forEach((unit, index) => {
const option = document.createElement('option');
option.value = index;
option.textContent = unit;
fromUnit.appendChild(option);
});
}
function convert() {
const value = parseFloat(document.getElementById('inputValue').value) || 0;
const fromIndex = parseInt(document.getElementById('fromUnit').value);
const toIndex = parseInt(document.getElementById('toUnit').value);
const conversion = conversions[currentCategory];
const baseValue = value / conversion.factors[fromIndex];
const result = baseValue * conversion.factors[toIndex];
document.getElementById('result').textContent = result.toFixed(2);
}
KEY FEATURES
✓ Multiple Unit Categories
✓ Conversion Factors Array
✓ Real-time Conversion
✓ Category Switching
✓ Dynamic Select Options
✓ Decimal Precision (2 digits)
✓ Support for Temperature Conversion
KEY LEARNING POINTS
• Object of Objects Data Structure
• Conversion Formula: (value / fromFactor) * toFactor
• Dynamic Option Creation
• Event Delegation
• parseFloat() & parseInt()
• Array forEach Method
• querySelector & querySelectorAll
← Back to Project