These are void elements. This means they aren’t designed to contain text or other elements, and as such do not need — and in fact, cannot have — a closing tag in HTML.1
However, they can have a <label>
associated with them:
<input id="my_id" type="radio" name="radio_name">
<label for="my_id">Radio Label</label>
Radio buttons by nature can’t contain text anyway, so it wouldn’t make sense for them to accept text or other elements as content. Another issue with a control that does accept text as input: should its textual content then be its value, or its label? To avoid ambiguity we have a <label>
element that does exactly what it says on the tin, and we have a value
attribute for denoting an input control’s value.
1 XHTML is different; by XML rules, every tag must be opened and closed; this is done with the shortcut syntax instead of a </input>
tag, although the latter is equally acceptable:
<input id="my_id" type="radio" name="radio_name" />
<label for="my_id">Radio Label</label>