Tagi HTML: output

5 min. czytania

Element <output> to znacznik HTML5 przeznaczony do wyświetlania wyników obliczeń oraz wartości wyjściowych powiązanych z formularzami. Sprawdza się wszędzie tam, gdzie dane wejściowe użytkownika mają natychmiast wpływać na prezentowany wynik.

Element <output> reprezentuje wynik obliczeń i umożliwia jego dynamiczną prezentację w interfejsie.

Podstawowe zastosowanie

Element <output> najczęściej służy do wyświetlania wartości obliczonych na podstawie danych z pól formularza. W połączeniu ze zdarzeniem oninput pozwala aktualizować wynik w czasie rzeczywistym, bez przeładowania strony.

Najprostszy przykład to kalkulator dodawania:

<form onsubmit="return false" oninput="o.value = parseFloat(a.value) + parseFloat(b.value)">
<input name="a" type="number" step="any"> +
<input name="b" type="number" step="any"> =
<output name="o"></output>
</form>

W tym przykładzie element <output> z atrybutem name="o" wyświetla sumę wartości z pól a i b. Każda zmiana w polach wejściowych natychmiast przelicza i prezentuje nowy wynik.

Atrybuty elementu <output>

Najważniejsze atrybuty i ich rola to:

  • for – rozdzielana spacjami lista identyfikatorów pól wejściowych, które wpływają na wynik; wspiera dostępność, jednoznacznie wskazując źródła danych;
  • name – nazwa elementu, która umożliwia jego identyfikację w JavaScript oraz w obrębie formularza;
  • form – identyfikator powiązanego formularza, który pozwala umieścić <output> poza <form> i nadal zachować powiązanie.

Przykład użycia atrybutu for z jawnie powiązanymi polami wejściowymi:

<form onsubmit="return false" oninput="o.value = parseFloat(a.value) + parseFloat(b.value)">
<input name="a" id="a" type="number" step="any"> +
<input name="b" id="b" type="number" step="any"> =
<output name="o" for="a b"></output>
</form>

Przykład powiązania elementu output z formularzem za pomocą atrybutu form:

<form id="kalkulator" onsubmit="return false" oninput="wynik.value = parseInt(liczba1.value) + parseInt(liczba2.value)">
<input id="liczba1" type="number">
<input id="liczba2" type="number">
</form>
<output name="wynik" form="kalkulator" for="liczba1 liczba2"></output>

Praktyczne przykłady

Kalkulator wynagrodzeń (brutto z VAT)

Bardziej zaawansowany przykład obliczania kwoty całkowitej uwzględniającej VAT wygląda następująco:

<form onsubmit="return false" oninput="document.querySelector('output').value = (hours.valueAsNumber * rate.valueAsNumber * (1 + vat.valueAsNumber)).toFixed(2)">
<p><label for="hours">Liczba godzin: </label>
<input type="number" min="0" id="hours" name="hours"></p>

<p><label for="rate">Stawka: </label>
<span>PLN</span><input type="number" min="0" id="rate" name="rate"></p>

<p><label for="vat">VAT: </label>
<input type="number" min="0" id="vat" value="0.23" name="vat"></p>

<p>Suma: <strong><output name="amount" for="hours rate vat">0</output> PLN</strong></p>
</form>

Suwak z wyświetleniem poziomu umiejętności

Poniżej przykład wykorzystujący <input type="range"> do prezentacji wartości na żywo:

<form onsubmit="return false" oninput="level.value = flevel.valueAsNumber">
<label for="flying">Wysoki poziom umiejętności</label>
<input name="flevel" id="flying" type="range" min="0" max="100" value="0">
<output for="flying" name="level">0</output>/100
</form>

Zastosowanie valueAsNumber zamiast parseInt

Podczas bardziej zaawansowanych obliczeń warto używać właściwości valueAsNumber zamiast funkcji parseInt lub parseFloat. Automatycznie konwertuje ona wartość pola na liczbę, eliminując potrzebę ręcznej konwersji typów i zmniejszając ryzyko błędów:

<form onsubmit="return false" oninput="o.value = a.valueAsNumber + b.valueAsNumber">
<input name="a" id="a" type="number" step="any"> +
<input name="b" id="b" type="number" step="any"> =
<output name="o" for="a b"></output>
</form>

JavaScript i dynamiczne obliczenia

Aktualizację elementu <output> można przeprowadzać także bezpośrednio z poziomu JavaScript, manipulując jego zawartością:

<form onsubmit="return false" oninput="document.getElementById('o').innerHTML = parseFloat(document.getElementById('a').value) + parseFloat(document.getElementById('b').value)">
<input name="a" id="a" type="number" step="any"> +
<input name="b" id="b" type="number" step="any"> =
<output name="o" id="o" for="a b"></output>
</form>

Takie podejście daje większą elastyczność w formatowaniu i prezentacji wyniku (np. dodanie jednostek, ikon lub wyróżnień).

Zastosowania w praktyce

Element <output> jest idealny dla formularzy, które wymagają natychmiastowych wyników obliczeń. Najczęstsze scenariusze użycia to:

  • kalkulatory cen i rabatów,
  • konwersje walut i jednostek miary,
  • wizualizacja zmian wartości w czasie rzeczywistym,
  • wyświetlanie wyników wyszukiwania lub filtrowania danych,
  • potwierdzanie i podgląd danych przed wysłaniem formularza.

Kluczową zaletą <output> jest jego semantyczne znaczenie – informuje przeglądarkę i technologie asystujące, że zawartość to wynik obliczeń, a nie zwykły tekst. Dzięki atrybutowi for można jawnie powiązać dane wejściowe z wynikiem, co znacząco poprawia dostępność interfejsu.