рони,
ай, спасибо за помощь. Для себя некоторые моменты прояснились :) Премного благодарен ;) |
Цитата:
По теме: что за 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, время: 17:08. |