Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите поправить скрипт редактора дерева, и покритикуйте, что не так 
:(
    Опции темы
Win MK 32
Дата 25.5.2009, 05:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 492
Регистрация: 15.7.2002

Репутация: нет
Всего: нет



Код

<!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=windows-1251" />
<script type="text/javascript">
/////////////////////
// Редактирование по двойному щелчку (enter - сохранить, esc - наоборот).
/////////////////////
var oldInnerHTML;
var editMode = false;
function dblclick(obj){
    if(editMode == false){
        editMode = true;
        oldInnerHTML = obj.innerHTML;
        obj.innerHTML = "<input type='text' id='editor' value='"+obj.innerHTML+"' size='"+(obj.innerHTML.length+7)+"'>";
    }
}
function keydown(evt,obj){
    if(evt.keyCode == 13){
        obj.innerHTML = document.getElementById('editor').value;
        
        var reg = /s_(.*)/
        var arr = reg.exec(obj.id);
        
        //phpSet("info","edit.php","sid="+arr[1]+"&stext="+obj.innerHTML);
        
        editMode = false;
    }
    if(evt.keyCode == 27){
        obj.innerHTML = oldInnerHTML;
        editMode = false;
    }
}
/////////////////////
// Появление кнопки(ссылки) после наведения и убирание после отведения курсора мыши.
/////////////////////
var oldInnerHTML2;
var editMode2 = false;
function mouseOver(obj){
    if(editMode2 == false){
        editMode2 = true;
        oldInnerHTML2 = obj.innerHTML;
        
        var reg = /s_(.*)/
        var arr = reg.exec(obj.id);
        obj.innerHTML = obj.innerHTML+" [ <a href='add.php?forParentId="+arr[1]+"'>Добавить дитя</a> ]";
    }
}
function mouseOut(obj){
    editMode2 = false
    obj.innerHTML = oldInnerHTML2;
}
</script>
<title>Могучее дерево</title>
</head>
<body>
<li id='s_1' onmouseout='mouseOut(this);' onmouseover='mouseOver(this);' ondblclick='dblclick(this);' onkeydown='keydown(event,this);'>111</li>
<li id='s_2' onmouseout='mouseOut(this);' onmouseover='mouseOver(this);' ondblclick='dblclick(this);' onkeydown='keydown(event,this);'>222</li>
<li id='s_3' onmouseout='mouseOut(this);' onmouseover='mouseOver(this);' ondblclick='dblclick(this);' onkeydown='keydown(event,this);'>333</li>
</body>
</html>

Заранее спасибо.

Добавлено через 2 минуты и 24 секунды
При наведении на свежепоявившуюся кнопку(ссылку в квадратных скобках) она начинает мигать. Я догадываюсь в чем причина (происходит mouseOver, ведь мышка попадает на дочерний элемент <a>). Но вот как исправить ситуацию?

А заодно какие еще у меня недочеты в коде?
PM   Вверх
youri
Дата 25.5.2009, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 2
Всего: 16



Цитата(Win MK 32 @  25.5.2009,  05:06 Найти цитируемый пост)
При наведении на свежепоявившуюся кнопку(ссылку в квадратных скобках) она начинает мигать. Я догадываюсь в чем причина (происходит mouseOver, ведь мышка попадает на дочерний элемент <a>). Но вот как исправить ситуацию?

только сначала происходит mouseout для li. Надо в mouseout проверять куда переходит мышка (toElement/relatedTarget)
PM   Вверх
Win MK 32
Дата 26.5.2009, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 492
Регистрация: 15.7.2002

Репутация: нет
Всего: нет



А как бобороть то, что вторая часть кода(автопоявление ссылки) при двойном щелчке мыши редактирует не просто текст "111", а еще и код ссылки? К тому же еще и не дает редактировать если двинуть мышку. То есть все пропадает если двинуть мышкой. Причем снова уже не отредактируешь.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.