EDITAR:
Este es un código de ejemplo que encontré en línea sobre polimorfismo, lo cambié un poco y me deshice de las declaraciones if-else. Paso directamente el valor seleccionado a v y luego trato de ejecutar:
<!DOCTYPE html> <html> <head> <title> Polymorphism in JavaScript </title> </head> <body> <div class = "results"> <h2> Polymorphism in JavaScript </h2> <form> <p> Please select your Vehicle type: </p> <select id="input"> <option value="Car">Car</option> <option value="Truck">Truck</option> </select> <br> <input type="button" value="Submit" onclick = "processData(this.form)"> </form> <div class = "resultText"> <p id = "result"> </p> </div> </div> <script type = "text/javascript"> class Vehicle { run() { return " Vehicle is running " ; } } class Car extends Vehicle { run() { return " Car is running " ; } } class Truck extends Vehicle { run() { return " Truck is running " ; } } function processData(form) { v = document.getElementById("input").value; console.log(v); msg = v.run(); document.getElementById("result").innerHTML = msg; } </script> </body> </html>Recibo el error "TypeError no detectado: v.run no es una función"
Puede usar var v = document.getElementById("input").value; para obtener el valor de una entrada de un formulario.
Luego, debe tener cuidado de agregar una id="input" al elemento html para que JS sepa qué entrada es.
No sé si entendí completamente lo que estás tratando de hacer, pero prueba esto :)
<!DOCTYPE html> <html> <head> <title> Polymorphism in JavaScript </title> </head> <body> <div class="results"> <h2> Polymorphism in JavaScript </h2> <form> <p> Please select your Vehicle type: </p> <select id="input"> <option value="Car">Car</option> <option value="Truck">Truck</option> </select> <br> <input type="button" value="Submit" onclick="processData()"> </form> <div class="resultText"> <p id="result"> </p> </div> </div> <script type="text/javascript"> class Vehicle { run() { return " Vehicle is running "; } } class Car extends Vehicle { run() { return " Car is running "; } } class Truck extends Vehicle { run() { return " Truck is running "; } } function processData() { let vehicle = new Vehicle(); const selectVal = document.getElementById("input").value; if (selectVal === "Car") { vehicle = new Car(); } else if (selectVal === "Truck") { vehicle = new Truck(); } document.getElementById("result").innerHTML = vehicle.run(); } </script> </body> </html>