Acabo de desarrollar un pequeño código para crear una tabla de 24x60. Quiero imprimir el id de cada <td>
en mouseover
: trabajaEficiencia de crear un controlador de eventos en un bucle anidado: ¿estoy creando 1440 funciones aquí?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
table {
background-color:blue;
}
td {
width: 2px;
height: 2px;
background-color:red;
}
</style>
</head>
<body>
<table id="time-table"></table>
<script type="text/javascript">
var table = document.getElementById("time-table");
for (var r = 0; r < 24; r++) {
var row = document.createElement("tr");
for (var c = 0; c < 60; c++) {
var td = document.createElement("td");
td.id = "td-" + r + "-" + c;
td.onmouseover = function (e) {
console.log(this.id);
}
row.appendChild(td);
}
table.appendChild(row);
}
</script>
</body>
</html>
El código, pero ahora estoy preocupado si está optimizado? ¿Estoy creando 1440 funciones de manejo de eventos en los bucles anidados? ¿O es el intérprete de JavaScript lo suficientemente inteligente como para crear solo una función y asignarla a 1440 <td>
elementos?
Para estar 100% seguro de que solo está haciendo una función, puede declararla fuera del ciclo. –
¿Qué intérprete? ¿Qué versión? Cada vez que pregunta si JavaScript es lo suficientemente inteligente, la respuesta suele ser no. – Joe
No sé si eso causa una nueva función para cada uno, pero si defines una función y luego simplemente la asignas, en lugar de usar la función anónima, debes tener referencias a la misma función. – JerseyMike