Tengo un piano de 88 teclas. "claves" son la clave de evento "k". Uso manillar y columna vertebral por lo que es imposible escribir miles de líneas aquí..
Lo que me gustaría es, si hay alguna forma de escribir el siguiente código en menos líneas... (uso Javascript y jQuery, así que ambos están bien) Muchas gracias
if (document.getElementById('do').innerHTML) { document.getElementById(keys).innerHTML = "C"; } if (document.getElementById('re').innerHTML) { document.getElementById(keys).innerHTML = "D"; } if (document.getElementById('mi').innerHTML) { document.getElementById(keys).innerHTML = "E"; } if (document.getElementById('fa').innerHTML) { document.getElementById(keys).innerHTML = "F"; } if (document.getElementById('sol').innerHTML) { document.getElementById(keys).innerHTML = "G"; } if (document.getElementById('la').innerHTML) { document.getElementById(keys).innerHTML = "A"; } if (document.getElementById('si').innerHTML) { document.getElementById(keys).innerHTML = "B"; } if (document.getElementById('do2').innerHTML) { document.getElementById(keys).innerHTML = "C"; } if (document.getElementById('re2').innerHTML) { document.getElementById(keys).innerHTML = "D"; } if (document.getElementById('mi').innerHTML) { document.getElementById(keys).innerHTML = "E"; }Puede crear una búsqueda de su mapeo y usar iterar a través de cada par de clave y valor para verificar la condición y asignarlo a html.
const lookup = {do: 'C', re: 'D', mi: 'E', fa: 'F', sol: 'G', la: 'A', si: 'B', do2: 'C', re2: 'D'} Object.entries(lookup).forEach(([key, val]) => { if (document.getElementById(key).innerHTML) { document.getElementById(keys).innerHTML = value; } });si se puede con variable
const constVar = document.getElementById(keys); if (document.getElementById('do').innerHTML) { constVar.innerHTML = "C"; }No estoy seguro del caso de uso exacto, pero este código puede optimizarse mediante un mapa y un bucle for. El código de ejemplo está debajo.
Ejemplo de enfoque a continuación:
const KEY_MAP = { "do": "C", "re": "D", "mi": "E", "fa": "F", "sol": "G", "la": "A", "si": "B", "do2": "C", "re2": "D", } function updateDomLabelUsingKeyMap(keys) { Object.keys(KEY_MAP).forEach(el => { if (document.getElementById(el).innerHTML) { document.getElementById(keys).innerHTML = KEY_MAP[el]; } }); } Llame a esta función updateDomLabelUsingKeyMap con las teclas prop.