Vanilla javascript selecciona por nombre

Así que tengo este problema en el que necesito establecer un valor para una checkbox dependiendo de algunas variables.

El problema es que encontré la próxima convención de nombres en el HTML con la que trabajaré:

<input id="jc_1" type="checkbox" name="jc[1]"> <input id="jc_2" type="checkbox" name="jc[2]"> <input id="jc_3" type="checkbox" name="jc[3]"> <input id="jc_4" type="checkbox" name="jc[4]"> 

Para decidir qué input seleccionar, normalmente lo haría:

 document.getElementsByName('jc') 

Luego revise todos y decida cuál comprobar, el problema aquí es que realmente no sé cómo manejar esta situación en estas condiciones específicas.

No puedo usar JQuery y no puedo cambiar mi marcado HTML.

Puede usar el selector de attributes comienza con querySelectorAll :

 var jcList = document.querySelectorAll("[name^=jc\\[]"); 

Sin embargo, ten en count que esto podría coincidir con los siguientes elementos:

 <input id="jc_1" type="checkbox" name="jc[0][0]"> 

Que puede no ser un problema para sus requisitos particulares.

Es una pena que no puedas cambiar el marcado.

Podrías hacer algo como …

 for(var i = 0; i<numberOfCheckboxes.length; i++){ document.getElementsByName('jc['+i+']'); } 

Pero este es un código realmente terrible. Y eso es suponiendo que conoces numberOfCheckboxes.

document.getElementsByName() devuelve una matriz (incluso si solo contiene un elemento. Solo necesita hacer reference al elemento [0] en la matriz seleccionada como este document.getElementsByName('jc[1]')[0]

 document.getElementsByName('jc[1]')[0].setAttribute('checked','checked'); 

MANIFESTACIÓN