El elemento tiene un atributo y una propiedad denominada checked
. La propiedad determina el estado actual.
El atributo es una cadena y la propiedad es un booleano. Cuando el elemento se crea a partir del código HTML, el atributo se establece a partir del marcado y la propiedad se establece según el valor del atributo.
Si no hay ningún valor para el atributo en el marcado, el atributo se convierte en null
, pero la propiedad es siempre bien true
o false
, por lo que se convierte en false
.
Cuando se establece la propiedad, se debe utilizar un valor booleano:
document.getElementById('myRadio').checked = true;
Si se establece el atributo, se utiliza una cadena:
document.getElementById('myRadio').setAttribute('checked', 'checked');
Tenga en cuenta que establecer el atributo cambia también el propiedad, pero establecer la propiedad no cambia el atributo.
Tenga en cuenta también que independientemente del valor que establezca el atributo, la propiedad se convierte en true
. Incluso si usa una cadena vacía o null
, configurar el atributo significa que está marcado. Utilice removeAttribute
para desactivar el elemento con el atributo:
document.getElementById('myRadio').removeAttribute('checked');
No. En HTML 4 y anteriores que * no * requiere un valor ... que era el nombre que era opcional. es decir 'checked =" checked "' es la versión completa, pero puede dejar 'checked =" 'y' "' off y simplemente dejar el valor atrás. (SGML puede obtener * raro *!) – Quentin
Dicho esto, la pregunta es sobre la propiedad DOM, no las reglas HTML. – Quentin
@Quentin - Muy bien, aunque eso es casi una discusión sobre semántica. – Oded