рони,
ай, спасибо за помощь. Для себя некоторые моменты прояснились :) Премного благодарен ;) |
Цитата:
По теме: что за this.a??? Это чтобы запутать? Если уж захотелось залезть в глобальную область, то чего ж стесняться, так бы и писал: window.a. Хотя это вроде как не принято (не самый хороший тон во всяком случае). Можно было бы хранить предыдущую ячейку в функции. Например, так: function setColor(){ if (!arguments.callee.a) arguments.callee.a = arguments[0] else arguments.callee.a.style.background = "white"; arguments[0].style.background = "green"; arguments.callee.a = arguments[0]; }А лучше через замыкания: var setColor = (function(){ var storage return function(){ var element = arguments[0] if (storage && storage != element) storage.style.background = "white"; element.style.background = "green"; storage = element } }()); |
Предлагаю следующую реализацию (все в одной функции):
<script type="text/javascript"> var superF = (function(){ var storage; return function(){ var event = arguments[0] || window.event switch(event.type){ case 'click': if (storage && storage != this) storage.style.background = "white"; this.style.background = "green"; storage = this; break; case 'mouseout': if (storage != this) this.style.background = "white"; break; case 'mouseover': if (storage != this) this.style.background = "#39F"; break; }; }; }()); var n = 3; document.write("<table border='1' style='border-collapse:collapse; width:400px; height:400px;'>"); for (var tr = 1; tr <= n; tr++) { document.write("<tr>"); for (var td = 1; td <= n; td++) { document.write("<td align='center' valign='middle' onclick='superF.call(this)' onmouseout='superF.call(this)' onmouseover='superF.call(this)' id='tdcolor'>A</td>")}; document.write("</tr>") } document.write("</table>"); </script> UPD: подправил передачу события |
спасибо-спасибо за ответы :)
|
Часовой пояс GMT +3, время: 05:18. |