Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

117
Vistas
¿Puedo hacer un menú desplegable sí/no algo dinámico basado en los datos del archivo JSON?

Tengo un archivo JSON que estará lleno de información del usuario y en la página de administración que muestra todos los usuarios quiero una columna para "¿Es administrador?" con una lista desplegable de sí/no. ¿Puedo hacer que la lista muestre Sí y tenga No como la otra opción para los administradores y muestre No y tenga Sí como la otra opción para los no administradores? La página es JavaScript vainilla ya que todavía soy bastante nuevo en esto.

Una muestra de los datos del usuario es

 {"id":"2", "username":"david", "password":"1234", "user_id":"127", "date":"2022-02-14 23:45:37", "is_admin":"1"}

Tan simple como es, el JavaScript para mostrar la página es

 function loadData(data) { let table = document.querySelector("#user-list"); for (let i = 0; i < data.length; i++) { let row = `<tr> <td>${data[i].user_id} </td> <td>${data[i].username} </td> <td>${data[i].date} </td> <td>${data[i].is_admin == 1 ? "Yes" : "No"} </td> </tr> `; table.innerHTML += row; } }

captura de pantalla agregada para referencia

Los administradores sí/no deberían ser

 <select> <option>Yes</option> <option>No</option> </select>

Y los no administradores deberían ser

 <select> <option>No</option> <option>Yes</option> </option>

También me acabo de dar cuenta de que los nombres de las columnas son incorrectos, pero la columna Admin es correcta, además de no ser un menú desplegable.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esta es una forma de hacerlo:

 const data=[{"id":"1", "username":"Harry", "password":"5678", "user_id":"112", "date":"2022-02-11 13:45:37", "is_admin":"0"}, {"id":"2", "username":"david", "password":"1234", "user_id":"127", "date":"2022-02-04 11:05:47", "is_admin":"1"}, {"id":"3", "username":"Molly", "password":"9834", "user_id":"187", "date":"2022-01-21 08:15:00", "is_admin":"0"}]; function loadData(data) { document.querySelector("#user-list").innerHTML=data.map(d=>`<tr> <td>${d.user_id}</td> <td>${d.username} </td> <td>${d.date} </td> <td><select><option value="1"${d.is_admin==1?" selected":""}>yes</option><option value="0"${d.is_admin==0?" selected":""}>no</option></select></td></tr>`).join(""); } loadData(data);
 <table> <thead><tr><th>id</th><th>name</th><th>date</th><th>admin</th></tr> <tbody id="user-list"></tbody></table>

La función de devolución de llamada en la llamada .map() genera una cadena HTML para un elemento <tr> con todo su contenido para cada uno de los objetos incluidos en la matriz de data . Estas cadenas HTML individuales son los elementos de la matriz devuelta y se join("") -juntas al final para volver a convertirse en una única cadena HTML.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda