За последние 24 часа нас посетили 18276 программистов и 1624 робота. Сейчас ищут 1795 программистов ...

onmouseover ведет себя странно

Тема в разделе "JavaScript и AJAX", создана пользователем gra4, 9 сен 2009.

  1. gra4

    gra4 Активный пользователь

    С нами с:
    9 сен 2009
    Сообщения:
    12
    Симпатии:
    0
    Добрый день, прошу совета. Есть такая проблема - почему-то обработчик событий onmouseover перестает работать.
    [js]function show_cell(x,y){
    document.getElementById("c"+x+y).innerHTML = x+','+y;
    document.getElementById("c"+x+y).style.visibility = 'visible';
    }

    function hide_cell(x,y){
    document.getElementById("c"+x+y).style.visibility = 'hidden';
    }[/js]
    [js]function show_move_grid(x,y){
    var arr = new Array(5);
    arr[0] = new Array(1);
    arr[0][0] = x; arr[0][1] = y-2;
    arr[1] = new Array(1);
    arr[1][0] = x-1; arr[1][1] = y-1;
    arr[2] = new Array(1);
    arr[2][0] = x-1; arr[2][1] = y+1;
    arr[3] = new Array(1);
    arr[3][0] = x; arr[3][1] = y+2;
    arr[4] = new Array(1);
    arr[4][0] = x+1; arr[4][1] = y+1;
    arr[5] = new Array(1);
    arr[5][0] = x+1; arr[5][1] = y-1;
    for (k=0;k<=5;k++){
    show_cell(arr[k][0],arr[k][1]);
    }
    }
    function hide_move_grid(x,y){
    var arr = new Array(5);
    arr[0] = new Array(1);
    arr[0][0] = x; arr[0][1] = y-2;
    arr[1] = new Array(1);
    arr[1][0] = x-1; arr[1][1] = y-1;
    arr[2] = new Array(1);
    arr[2][0] = x-1; arr[2][1] = y+1;
    arr[3] = new Array(1);
    arr[3][0] = x; arr[3][1] = y+2;
    arr[4] = new Array(1);
    arr[4][0] = x+1; arr[4][1] = y+1;
    arr[5] = new Array(1);
    arr[5][0] = x+1; arr[5][1] = y-1;
    for (k=0;k<=5;k++){
    hide_cell(arr[k][0],arr[k][1]);
    }
    }[/js]

    используется так -
    HTML:
    1. <div id='c33'><img src='/a/img/mage.gif' onmouseover='show_move_grid(3,3);' onmouseout='hide_move_grid(3,3);' alt=''/></div>
    , Работает, как и задумывалось.
    Однако если надо подсветить одну клетку -
    HTML:
    1. <div onmouseover='show_cell(2,2);' onmouseout='hide_cell(2,2);' ondblclick='alert(22);' id='c22'>2,2</div>
    работать перестает.

    Заранее спасибо, жду ответов.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Отлаживайте.
    alert в функцию show_cell вставьте. Посмотрите, какой id составляется, есть ли в реальности такой.
     
  3. gra4

    gra4 Активный пользователь

    С нами с:
    9 сен 2009
    Сообщения:
    12
    Симпатии:
    0
    выше приведен javascript, функция show_move_grid() работает правильно, вызывая функцию show_cell(),
    сама по себе функция show_cell() не работает при вызове.

    Алерты не нужны, хтмл, выложеный выше - "живой", все айди правильные.
    Кстати, подскажите, будет-ли div с style.visibility = 'hidden' обрабатывать события по своему содержимому?
    Может в этом дело?
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я это уже читал. Визуально не могу ничего сказать.

    Если логика не работает, значит в ней ошибка. Любая ошибка нуждается в отладке. Не думайте, что программисты пишут тысячи строк кода без ошибок. Функция во время работы с отдельной клеткой вызывается? Полностью отрабатывает? Консоль ошибок ничего не показывает?



    Зачем спрашивать, если быстрее проверить? Не в обиду. Я вот проверил и отвечаю, что работать события не будут.
     
  5. gra4

    gra4 Активный пользователь

    С нами с:
    9 сен 2009
    Сообщения:
    12
    Симпатии:
    0
    Сильно далек от темы, какая именно консоль?)
    Опытным путем выяснил, что и при пустом innerHTML дива, даже с заданными размерами, работать не будет.

    В общем, в какую сторону рыть понятно, спасибо.
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    В Opera & Firefox есть консоль javascript Ошибок.
    Для firefox есть дополнение firebug
     
  7. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    В IE8 есть отладчик JS, DOM-инспектор, возможность переключиться на режим IE7