es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de Onchange: indefinido (configurando ‘valor’)

Estoy solicitando ayuda, tengo un problema porque obtengo este error “Uncaught TypeError: Cannot set properties of undefined (setting ‘value’)” en mi consola. No puedo utilizar document.getElementByID porque mi ID cambiará, debe ser class. ¿Alguien podría ayudarme a saber qué necesita ser cambiado en este código?

function information(ele){

for(var i=0; i<30; i++){
 var address1 = document.getElementsByClassName('test2')[i];

  if( ele.value == "test4"){
    address1.value = "test5";
  } else if (ele.value == "test6"){
    address1.value = "test7";
  } else if (ele.value == "test8"){
    address1.value = "test9";
  }
}
}
<div class="form grup information">
  <lable for="dates-full.names">Nombres completos</lable>
  <input name="dates-full.names" list="dates-full.names" type="text" class="form grup test1" onchange="information(this)">
  <datalist type="text" id="dates-full.names">
    <option value="test4">
    <option value="test6">
    <option value="test8">
  </option></datalist>
</div>

<div class="form grup test2">
  <lable for="power-full.adress">Dirección completa</lable>
  <input id="test2" name="dates-full.adress" list="dates-full.adress" type="text" class="form grup test2">
  <datalist type="text" id="dates-full.adress">
    <option value="test5">
    <option value="test7">
    <option value="test9">
  </option></datalist>
</div>
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema es que estás tratando de asignar un valor a una variable que está indefinida. Al observar el código, la variable address1 se está estableciendo usando getElementsByClassName, que devuelve una matriz de elementos con el nombre de clase especificado. Dado que tienes varios elementos con el nombre de clase “test2”, necesitas especificar cuál quieres establecer como valor.

    En lugar de usar la variable address1, puedes utilizar el índice del elemento en la matriz. Como estás recorriendo 30 elementos, puedes usar la variable del bucle i para acceder al elemento correcto en la matriz.

    Reemplaza esta línea de código:

    var address1 = document.getElementsByClassName('test2')[i];

    con esto:

    document.getElementsByClassName('test2')[i].value = 'nuevoValor';

    Reemplaza ‘nuevoValor’ con el valor que deseas establecer para el elemento de entrada.

    Esto establecerá el valor del elemento de entrada con la clase ‘test2’ que corresponde a la iteración actual del bucle.

Comments are closed.