Q:

Error en AddEventListener Javascript

<form name="Registro" method="get">
   <table>
      <tr>
         <td>Nombre:</td>
         <td><input type="text" name="nombre" class="B4I1"></td>
      </tr>
      <tr>
         <td>Apellido:</td>
         <td><input type="text" name="apellido" class="B4I2"></td>
      </tr>
      <tr>
         <td>Edad:</td>
         <td> <input type="number" name="edad" id="B4I3"></td>
      </tr>
      <tr>
         <td></td>
         <td><input type="submit" id="B4I4"></td>
      </tr>
   </table>
</form>

Mi código javascript es el siguiente:
function Comenzar(){
    console.log("hasta aca estoy")
    var nombre1
    var apellido1
    nombre1=document.getElementsByClassName("B4I1");
    apellido1==document.getElementsByClassName("B4I2");

    nombre1.addEventListener("keyup",validacion,false);
    apellido1.addEventListener("keyup",validacion,false);
    

    validacion();
}
function validacion(){

    if ((nombre1.value==" ") && (apellido1.value==" ")){
        nombre1.setCustomValidity("Introduce nombre, apellido y edad");
        nombre1.style.background="#FFA07A";
        apellido1.style.background="#FFA07A";
        
        
    } else {
        nombre1.setCustomValidity("");
        nombre1.style.background="#5f9ea0";
        apellido1.style.background="#FFFFFF";
        
    }
}
addEventListener("load",Comenzar,false);

Esto me devuelve el error siguiente:
10.Formularios.js:9 Uncaught TypeError: nombre1.addEventListener is not a function

Si alguien puede ayudarme :)

A:

Este error se produce porque addEventListener  solo aplica a elementos HTML y cuando utilizas getElementsByClassName  lo que obtienes es una colección de elementos
Para solventarlo has de iterar cada elemento
Por ejemplo puedes hacerlo así
const items = document.getElementsByClassName('demo');

items.forEach(element => {
  element.addEventListener('click', (event) => {
    const { currentTarget } = event;
    
  });
});

Nótese que para usar forEach en todos los navegadores necesitas agregar el polyfill correspondiente, o bien implementar corejs, underscore, lodash u otro equivalente.

