Python Bottle maneja operaciones de botones onclick simples y múltiples.
¿Cómo puedo activar una operación si se hace clic en un botón por primera vez, pero si se presiona nuevamente hacer una tarea adicional?
- Primero, hay una descripción de lo que intento lograr, ¡también proporcionaré un poco de código a continuación!
Ahora, cuando hago clic en el botón desde el lado del cliente, necesito que los datos de obj_list
se multipliquen y se almacenen los resultados en obj_db
(lo cual ya he hecho).
Pero cuando hago clic en el botón nuevamente, necesito multiplicar y sumar los nuevos datos devueltos de obj_list
con los datos almacenados previamente en obj_db
, y así sucesivamente.
<h1>si presiono un botón en el lado del cliente, (obj_list) devuelve algo como [0.3, 2.32, 1.22], que obtengo a través de Python.</h1>
if request.method == 'POST':<br>
x = 1
obj_db = []
for obj_items in obj_list:<br>
should_sum = False
while not should_sum:
x *= obj_items
#retornar solo dos números decimales después del número flotante<br>
new_obj_num = round(obj_total, 2)
obj_db.append(new_obj_num)
print('valor almacenado : ', obj_db)
if objeto_seleccionado:
obj_db += obj_items
else:
should_sum = True
¿Alguna sugerencia??!
davy.ai
Una posible solución es usar una variable de bandera para llevar un registro de si el botón ha sido o no presionado antes. Si es la primera vez, entonces simplemente se puede multiplicar el
obj_list
y almacenarlo enobj_db
. Sin embargo, si la bandera está configurada en verdadero, se puede usar un bucle para iterar sobre tantoobj_db
como el nuevoobj_list
para multiplicar y luego sumar sus elementos respectivos. Aquí hay un ejemplo de fragmento de código:“`javascript
let clicked = false;
let obj_db = [];
// evento de clic del botón
document.getElementById(“myButton”).addEventListener(“click”, function() {
let obj_list = [0.3, 2.32, 1.22]; // asumiendo que estos son los datos devueltos
if (!clicked) { // primera vez que se presiona el botón
clicked = true;
obj_db = obj_list.map(num => Math.round(num * 100) / 100); // multiplicar y redondear a 2 decimales
} else { // el botón ha sido presionado antes
obj_db.forEach((num, index) => {
obj_db[index] = Math.round(num * obj_list[index] * 100) / 100; // multiplicar y redondear a 2 decimales
});
obj_list = obj_list.map(num => Math.round(num * 100) / 100); // actualizar obj_list con los valores redondeados
obj_db = obj_db.map((num, index) => Math.round((num + obj_list[index]) * 100) / 100); // sumar y redondear a 2 decimales
}
});
Tenga en cuenta que esta es solo una posible solución y puede necesitar adaptarse para adaptarse a su caso de uso específico.