Quiero agregar el valor de retorno de un menú desplegable a un objeto que he creado con marcadores de posición.
pinecones.onchange = function(e) { let value = pinecones.options[pinecones.selectedIndex].value; console.log(value); }En lugar de que la consola registre el valor de retorno, quiero agregarlo a este objeto:
let stack = { pinecones: null, kindling: null, logs: null };Puede obtener el valor del evento de change con e.target.value .
const pineconesSelectEl = document.querySelector('select') let stack = { pinecones: null, kindling: null, logs: null }; pineconesSelectEl.addEventListener('change', (e) => { const { value } = e.target stack.pinecones = value console.log(stack); }) <label>pinecones: <select> <option value="">Select pinecones</option> <option value="Option1">Option1</option> <option value="Option2">Option2</option> <option value="Option3">Option3</option> </select> </label> Podemos hacer que nuestra solución sea un poco más reutilizable agregando nuestro detector de eventos de cambio a todos los elementos seleccionados y obteniendo tanto el name como el value del target del evento de cambio.
const selectEls = document.querySelectorAll('select') let stack = { pinecones: null, kindling: null, logs: null }; selectEls.forEach(selectEl => { selectEl.addEventListener('change', (e) => { const {value, name} = e.target stack[name] = value console.log(stack); }) }) <label>pinecones: <select name="pinecones"> <option value="Option1">Option1</option> <option value="Option2">Option2</option> <option value="Option3">Option3</option> </select> </label> <label>kindling: <select name="kindling"> <option value="Option1">Option1</option> <option value="Option2">Option2</option> <option value="Option3">Option3</option> </select> </label> <label>logs: <select name="logs"> <option value="Option1">Option1</option> <option value="Option2">Option2</option> <option value="Option3">Option3</option> </select> </label>Parece que desea agregar otro par clave/valor a su objeto (variable de pila).
Esta sería mi solución:
pinecones.onchange = function(e) { let value = pinecones.options[pinecones.selectedIndex].value; stack.value = value; // the key name can be something else console.log(value); }