Para nuestro sitio web, usamos el navegador de Internet antes y estaba totalmente bien sin errores, pero a partir de ayer migramos a navegadores modernos y cuando hacemos clic, recibimos el mensaje de error Uncaught TypeError: document.hwinv.datatyp.options.focus is not a function en la herramienta de desarrollo. El error está causando en document.hwin.datatyp.options.focus(); línea. Antes de usarlo en Edge, estaba totalmente bien y en este momento está causando ese error. ¿Puedo saber cómo puedo solucionarlo? Se agregó el enlace JS Fiddle para verificar. Además, vi agregar setTimeout pero no sé cómo funciona.
function gonext() { var myIndex = document.hwinv.datatyp.options.selectedIndex; var chkvalue=document.hwinv.datatyp.options[myIndex].value; if(!(chkvalue)) { document.hwinv.datatyp.options.focus(); alert("Please select Hardware Type!"); } else { document.hwinv.step.value='11'; document.hwinv.submit(); } } <body style="margin=0px;" alink="#0000ff" vlink="#0000ff" bgcolor="#ffffff" window.focus="document.hwinv.datatyp.options.focus();"> <form name="hwinv" method="post" action="inventory.php" target="bottomview">¡Bienvenido a StackOverflow!
Oh chico. Si este es el tipo de HTML que tiene su sitio, migrarlo para usar HTML, CSS y JS más "modernos" será un proceso bastante largo. Pero tiene que hacerse, ahora que IE está oficialmente muerto.
Es posible que no sepa que hay una forma de hacer que Edge ejecute un sitio de forma casi idéntica a cómo lo habría hecho IE. Lo que podría ser suficiente para que su sitio vuelva a funcionar. Encontré algunasinstrucciones decentes sobre cómo hacerlo .
Sin embargo, no confiaría en eso como una solución a largo plazo. En algún momento, necesitará migrar este sitio para usar HTML5, CSS3 y JS moderno. Pero podría ayudarte en un apuro.
Para empezar, la respuesta específica a su pregunta sobre la excepción es que el método focus() no existe en la propiedad .options de las entradas seleccionadas. Más bien, existe en el propio objeto de entrada seleccionado.
Pero también queremos tratar con el otro marcado anticuado en el fragmento que publicaste.
window.focus="..." no es una cosa. Hay atributos on____ en los elementos, como onfocus en su caso, pero se considera una mala práctica usarlo, por lo general. En su lugar, registre un controlador de eventos en el código JS como hago a continuación.style="margin=0px" es incorrecto. Dentro de los atributos de estilo en línea, la sintaxis es property: value , no property=value .alink , vlink y bgcolor deben reemplazarse con el CSS apropiado, como lo he hecho a continuación. alink corresponde al body a , vlink corresponde al body a:visited y bgcolor corresponde al body { background-color: white; } . function gonext() { var myIndex = document.hwinv.datatyp.options.selectedIndex; var chkvalue = document.hwinv.datatyp.options[myIndex].value; if (!(chkvalue)) { document.hwinv.datatyp.focus(); alert("Please select Hardware Type!"); } else { document.hwinv.step.value = '11'; document.hwinv.submit(); } } document.addEventListener('DOMContentLoaded', function () { document.hwinv.datatyp.focus(); }); body { margin: 0; background-color: white; } body a { color: blue; } body a:visited { color: blue; } <body> <form name="hwinv" method="post" action="inventory.php" target="bottomview"> <select name="datatyp"> <option>Hammer</option> <option>Spanner</option> <option>Other</option> </select> </form> </body>