创建一个类,以减少我的代码和重用它



我是一名javascript学生,所以有些事情在我的脑海中仍然不完全清楚。我想通过传递某些参数来重新排列我的代码,使其可重用此时此刻,我已经构建了这个信用模拟器,在一个更长的代码中,我想到要构建一个类,这个类能够提供它所需的数据并返回我需要在屏幕上显示的值。第一个方法"创建客户端"构建信用申请人的配置文件并将其保存在数组中,我需要的是第二个方法,该方法返回该人必须支付的费用值,并添加到请求信用的客户配置文件中。同样,我也找不到"计算器"的方法。方法来提供客户端变量接收到的信息,我被困住了,我在一杯水里淹死了,谢谢!

const datosTabla = document.querySelector("#tftable,tbody"); const tasas = cambiarValorTasas() let planesVisible = false;
class Clientes {
constructor (){
this.clients = []
}
creacionClientes(nombre, apellido, email, monto, plazo, tasas){
this.clients.push({
id: Date.now(),
nombre: nombre,
apellido: apellido,
email: email,
monto: monto,
plazo: plazo,
tasas: tasas,
});  
}
calcularCuotas(monto, tasas, plazos){
let hoy = new Date()
let pagoMensual = 0;
let pagoAmortizacion = 0;
let pagosIntereses = 0;
pagoMensual = monto * (Math.pow(1+tasas/100, plazos)*tasas/100)/(Math.pow(1+tasas/100, plazos)-1);
while (datosTabla.firstChild){
datosTabla.removeChild(datosTabla.firstChild);
}

//creacion de fechas sucesivas
function formatoFecha(fecha) {

fecha = new Date(fecha);
var dia = fecha.getDate();
var mesIndex = fecha.getMonth()+1;
var año = fecha.getFullYear();

return dia + "/" + mesIndex + "/" + año;
}

for(let i = 1; i <= plazos; i++) {

pagosIntereses = parseFloat(monto*(tasas/100));
pagoAmortizacion = parseFloat(pagoMensual - pagosIntereses);
monto = parseFloat(monto-pagoAmortizacion);

var fechaX = hoy.setMonth(hoy.getMonth() + 1);
//creacion de las filas
$("#tablaPrestamos").append(`<tr><td>${formatoFecha(fechaX)}
<td class="valorCuota">${pagoMensual.toFixed(2)}</td>
<td>${pagoAmortizacion.toFixed(2)}</td>
<td>${pagosIntereses.toFixed(2)}</td>
<td>${monto.toFixed(2)}</td>`);
}
}     }
function cambiarValorTasas (){
let plazosOpc = $("#menuPlazos").prop('selectedIndex');
let opciones = $("#menuPlazos").prop('options');
if (opciones[plazosOpc].value == 12){
$('#tasasSeleccion').html(3.95);
} else if (opciones[plazosOpc].value == 24){
$('#tasasSeleccion').html(4.19);
} else if (opciones[plazosOpc].value == 36){
$('#tasasSeleccion').html(4.36);;
}
return $('#tasasSeleccion').val(); } $(document).on('change', cambiarValorTasas);
function mostrarTabla(nombre, visibilidad ){
let mostrar = document.getElementById(nombre);
if (visibilidad == false){
if(mostrar.classList.contains("noMostrar")){
mostrar.classList.remove("noMostrar")
}
mostrar.className += " mostrar"
} else {
if(mostrar.classList.contains("mostrar")){
mostrar.classList.remove("mostrar")
}
mostrar.className += " noMostrar"
} } $('#botonCalc').on('click', (e) =>{
e.preventDefault();
mostrarTabla('tasasSeleccion', planesVisible);
mostrarTabla('tasasLabel', planesVisible);
mostrarTabla('botonEnviar', planesVisible);
mostrarTabla('tablaPrestamos', planesVisible);
planesVisible = !planesVisible;    
})
$('#botonEnviar').on("click", (e) =>{
e.preventDefault();
let cliente = new Clientes();
cliente.creacionClientes($('#nombre').val(), $('#apellido').val(), $('#mail').val(), parseInt($('#aSolicitar').val()), parseInt($('#menuPlazos').val()), parseFloat(tasas))
console.log(cliente)
cliente.calcularCuotas(parseInt($('#aSolicitar').val()), tasas, parseInt($('#menuPlazos').val())) })

问题是您将客户端列表保存在中客户端

我想试试这个:

  1. 获取每个客户端之外的客户端列表
  2. 在构造函数上创建客户端(而不是creationclients)
  3. 在创建客户端之前将其添加到客户端列表
  4. 现在您可以在calcularCuotas中使用this,其中存储客户端信息(例如this.nombre)

可以是这样的

const datosTabla = document.querySelector("#tftable,tbody"); const tasas = cambiarValorTasas() let planesVisible = false;
const clientes = []
class Clientes {
constructor (nombre, apellido, email, monto, plazo, tasas){
this = {
id: Date.now(),
nombre: nombre,
apellido: apellido,
email: email,
monto: monto,
plazo: plazo,
tasas: tasas,
}   
clients.push(this);  
}
calcularCuotas(monto, tasas, plazos){
let hoy = new Date()
let pagoMensual = 0;
let pagoAmortizacion = 0;
let pagosIntereses = 0;
pagoMensual = monto * (Math.pow(1+tasas/100, plazos)*tasas/100)/(Math.pow(1+tasas/100, plazos)-1);
while (datosTabla.firstChild){
datosTabla.removeChild(datosTabla.firstChild);
}

//creacion de fechas sucesivas
function formatoFecha(fecha) {

fecha = new Date(fecha);
var dia = fecha.getDate();
var mesIndex = fecha.getMonth()+1;
var año = fecha.getFullYear();

return dia + "/" + mesIndex + "/" + año;
}

for(let i = 1; i <= plazos; i++) {

pagosIntereses = parseFloat(monto*(tasas/100));
pagoAmortizacion = parseFloat(pagoMensual - pagosIntereses);
monto = parseFloat(monto-pagoAmortizacion);

var fechaX = hoy.setMonth(hoy.getMonth() + 1);
//creacion de las filas
$("#tablaPrestamos").append(`<tr><td>${formatoFecha(fechaX)}
<td class="valorCuota">${pagoMensual.toFixed(2)}</td>
<td>${pagoAmortizacion.toFixed(2)}</td>
<td>${pagosIntereses.toFixed(2)}</td>
<td>${monto.toFixed(2)}</td>`);
}
}     }
function cambiarValorTasas (){
let plazosOpc = $("#menuPlazos").prop('selectedIndex');
let opciones = $("#menuPlazos").prop('options');
if (opciones[plazosOpc].value == 12){
$('#tasasSeleccion').html(3.95);
} else if (opciones[plazosOpc].value == 24){
$('#tasasSeleccion').html(4.19);
} else if (opciones[plazosOpc].value == 36){
$('#tasasSeleccion').html(4.36);;
}
return $('#tasasSeleccion').val(); } $(document).on('change', cambiarValorTasas);
function mostrarTabla(nombre, visibilidad ){
let mostrar = document.getElementById(nombre);
if (visibilidad == false){
if(mostrar.classList.contains("noMostrar")){
mostrar.classList.remove("noMostrar")
}
mostrar.className += " mostrar"
} else {
if(mostrar.classList.contains("mostrar")){
mostrar.classList.remove("mostrar")
}
mostrar.className += " noMostrar"
} } $('#botonCalc').on('click', (e) =>{
e.preventDefault();
mostrarTabla('tasasSeleccion', planesVisible);
mostrarTabla('tasasLabel', planesVisible);
mostrarTabla('botonEnviar', planesVisible);
mostrarTabla('tablaPrestamos', planesVisible);
planesVisible = !planesVisible;    
})
$('#botonEnviar').on("click", (e) =>{
e.preventDefault();
let cliente = new Clientes($('#nombre').val(), $('#apellido').val(), $('#mail').val(), parseInt($('#aSolicitar').val()), parseInt($('#menuPlazos').val()), parseFloat(tasas))
console.log(cliente)
clientes.push(cliente)
cliente.calcularCuotas(parseInt($('#aSolicitar').val()), tasas, parseInt($('#menuPlazos').val())) })

最新更新