Web Foundations

Output Element

Calculation results, form outputs, and dynamic content display.

Advertisement

Output Element

Calculation results, form outputs, and dynamic content display.

Overview

The <output> element represents calculation results.

Key Concepts

  • Form Calculations โ€” Display computed values
  • Live Updates โ€” Dynamic result display
  • Accessibility โ€” Screen reader announcements
  • Event Handling โ€” React to form changes
  • Styling โ€” Custom appearance

Code Examples

<form id="calculator">
  <div>
    <label for="num1">Number 1:</label>
    <input type="number" id="num1" value="0">
  </div>
  
  <div>
    <label for="operator">Operator:</label>
    <select id="operator">
      <option value="+">+</option>
      <option value="-">-</option>
      <option value="*">ร—</option>
      <option value="/">รท</option>
    </select>
  </div>
  
  <div>
    <label for="num2">Number 2:</label>
    <input type="number" id="num2" value="0">
  </div>
  
  <div>
    <label for="result">Result:</label>
    <output id="result" for="num1 operator num2">0</output>
  </div>
</form>

<script>
const form = document.getElementById('calculator');
const num1 = document.getElementById('num1');
const num2 = document.getElementById('num2');
const operator = document.getElementById('operator');
const result = document.getElementById('result');

function calculate() {
  const a = parseFloat(num1.value) || 0;
  const b = parseFloat(num2.value) || 0;
  const op = operator.value;
  
  let res;
  switch (op) {
    case '+': res = a + b; break;
    case '-': res = a - b; break;
    case '*': res = a * b; break;
    case '/': res = b !== 0 ? a / b : 'Error'; break;
  }
  
  result.textContent = res;
  result.classList.add('updated');
  setTimeout(() => result.classList.remove('updated'), 300);
}

[num1, num2, operator].forEach(el => {
  el.addEventListener('input', calculate);
});

// Shopping cart total
function updateCartTotal() {
  const items = document.querySelectorAll('.item-price');
  const total = Array.from(items).reduce((sum, item) => 
    sum + (parseFloat(item.value) || 0), 0
  );
  document.getElementById('cartTotal').textContent = `$${total.toFixed(2)}`;
}
</script>

<style>
output {
  display: inline-block;
  padding: 8px 16px;
  background: #f8f9fa;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 1.2rem;
  font-weight: bold;
  min-width: 100px;
  text-align: center;
}

output.updated {
  background: #d4edda;
  border-color: #28a745;
}
</style>

Practice

Build a tip calculator using the output element and form inputs.

Advertisement