Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.09.2010, 10:45
Новичок на форуме
Отправить личное сообщение для stryker Посмотреть профиль Найти все сообщения от stryker
 
Регистрация: 20.09.2010
Сообщений: 7

рони,
ай, спасибо за помощь.
Для себя некоторые моменты прояснились
Премного благодарен
Ответить с цитированием
  #12 (permalink)  
Старый 20.09.2010, 10:53
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от stryker
да не по собственной воле-то
А по чьей?
По теме: что за 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
  }
}());
Ответить с цитированием
  #13 (permalink)  
Старый 20.09.2010, 13:41
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Предлагаю следующую реализацию (все в одной функции):
<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: подправил передачу события

Последний раз редактировалось Sweet, 20.09.2010 в 15:16.
Ответить с цитированием
  #14 (permalink)  
Старый 20.09.2010, 14:16
Новичок на форуме
Отправить личное сообщение для stryker Посмотреть профиль Найти все сообщения от stryker
 
Регистрация: 20.09.2010
Сообщений: 7

спасибо-спасибо за ответы
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста, помогите с созданием скрипта! Елизавета Общие вопросы Javascript 10 08.06.2010 13:20
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44
Помогите пожалуйста, очень срочно!!! PAMAC AJAX и COMET 1 20.10.2009 23:38
Помогите, пожалуйста! rzhsasha Ваши сайты и скрипты 2 20.07.2009 21:07
Помогите, пожалуйста zashibis Общие вопросы Javascript 1 02.12.2008 14:07