Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2008, 19:18
Профессор
Отправить личное сообщение для SunYang Посмотреть профиль Найти все сообщения от SunYang
 
Регистрация: 22.02.2008
Сообщений: 189

Снова панелька.
Столкнулся я такой бедой. Так вот по поводу этой зловещей таблички, при наведении мыши на которую, в одну из ячеек таблицы записывается текст из переменной, а когда мы удираем мышь из области таблицы, туда записывается пустая строка. Так вот, если в тексте, который мы интегрируем (методом innerHTML) в таблицу безо всяких тэгов, то табличка пропадает только после того, как мы выйдем из области таблицы, НО если мы записали туда текст ссылками или оформленный стилем, да и вообще как только встречается какой нито тэг, то табличка исчезает сразу же по паведении на ссылку или "стильный" текст. Как от этого избавиться. Почему так дико воспринимаются теги?
Вот собстн. код:
<script>
str_1 = '<b>Рейтинг Медведева вырос. Лидеры ОДКБ приняли декларацию о событиях на Кавказе. В России запретят продажу 92-го бензина.Райс: международная изоляция России растёт. Против России в Европе ведется информационная война. В Россию придет премиум-марка</b>'

function move(idelem, wrstr) {
argStr = move.arguments
strWr = argStr[1]
var xid = idelem.id;
var axid = xid.split("")
var numid = axid[3]
var newid = "wr_"+numid
var wrtd = document.getElementById(newid)
wrtd.innerHTML = strWr
//event.returnValue = false
}

</script>
 
<div style="position:absolute; left:393px; top:104px;" onMouseOver="move(this, str_1)" id="mv_1" onMouseOut="move(this, '')">
<table width="240" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><img src="images/panel_top.gif" width="240" height="12"></td>
  </tr>
  <tr>
    <td align="center" class="onpanel" width="240"><p class="text_1">Текст</p></td>
  </tr>
    <tr>
    <td align="center" class="onpanel" id="wr_1"></td>
  </tr>
  <tr>
    <td><img src="images/panel_but.gif" width="240" height="12"></td>
  </tr>
</table>
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2008, 20:43
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

<html>
<head>

<body class="page-body">

<script>
str_1 = '<b>Рейтинг Медведева вырос. Лидеры ОДКБ приняли декларацию о событиях на Кавказе. В России запретят продажу 92-го бензина.Райс: международная изоляция России растёт. Против России в Европе ведется информационная война. В Россию придет премиум-марка</b>'
 
function move(idelem, wrstr) {
	var newid = idelem.id.replace(/\D*(\d*)\D*/,"wr_$1");
	if (wrstr) {
		clearTimeout(this.timer);
		document.getElementById(newid).innerHTML = wrstr;
	}
	else {
		this.timer = setTimeout('document.getElementById("'+newid+'").innerHTML = "'+wrstr+'";',100);
	}
}
 
</script>
 
<div style="position:absolute; left:393px; top:104px;" onMouseOver="move(this,str_1)" id="mv_1" onMouseOut="move(this, '')">
<table width="240" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><img src="images/panel_top.gif" width="240" height="12"></td>
  </tr>
  <tr>
    <td align="center" class="onpanel" width="240"><p class="text_1">Текст</p></td>
  </tr>
    <tr>
    <td align="center" class="onpanel" id="wr_1"></td>
  </tr>
  <tr>
    <td><img src="images/panel_but.gif" width="240" height="12"></td>
  </tr>
</table>
</div>


</html>
Ответить с цитированием
  #3 (permalink)  
Старый 06.09.2008, 20:39
Профессор
Отправить личное сообщение для SunYang Посмотреть профиль Найти все сообщения от SunYang
 
Регистрация: 22.02.2008
Сообщений: 189

var newid = idelem.id.replace(/\D*(\d*)\D*/,"wr_$1"); - мне немного непонятен этот синтаксис. Что делает это выражение?
Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 06.09.2008, 22:52
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

replace заменяет первое выражение на второе
первое выражение (регулярка): /\D*(\d*)\D*/ - почитай про регулярные выражения. Я не лектор...
второе выражение (строка): "wr_$1", где $1 - выражение, соответствующее из регулярке, заключенной в скобки (вернее первый член массива, если их несколько).

Короче, я объясняю слишком запутанно, так как пора спать...
Почитай про регулярки и про формат replace.
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2008, 18:38
Профессор
Отправить личное сообщение для SunYang Посмотреть профиль Найти все сообщения от SunYang
 
Регистрация: 22.02.2008
Сообщений: 189

А чето ссылки в этой выпадающей менюшки не работают. Подскажите как сделать?
Ответить с цитированием
  #6 (permalink)  
Старый 09.09.2008, 19:01
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

я телепат? код пожалуйста....
Ответить с цитированием
  #7 (permalink)  
Старый 10.09.2008, 00:21
Профессор
Отправить личное сообщение для SunYang Посмотреть профиль Найти все сообщения от SunYang
 
Регистрация: 22.02.2008
Сообщений: 189

<html>
<head>
 
<body class="page-body">
 
<script>
str_1 = '<p>Лидеры ОДКБ приняли декларацию о событиях на Кавказе. В России запретят продажу 92-го бензина.Райс: международная изоляция России растёт. Примерный текст.</p><a href="url">Подробнее...</a>'
 
function move(idelem, wrstr) {
    var newid = idelem.id.replace(/\D*(\d*)\D*/,"wr_$1");
    if (wrstr) {
        clearTimeout(this.timer);
        document.getElementById(newid).innerHTML = wrstr;
    }
    else {
        this.timer = setTimeout('document.getElementById("'+newid+'").innerHTML = "'+wrstr+'";',100);
    }
}
 
</script>
 
<div style="position:absolute; left:393px; top:104px;" onMouseOver="move(this,str_1)" id="mv_1" onMouseOut="move(this, '')">
<table width="240" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><img src="http://javascript.ru/forum/images/panel_top.gif" width="240" height="12"></td>
  </tr>
  <tr>
    <td align="center" class="onpanel" width="240"><p class="text_1">Текст</p></td>
  </tr>
    <tr>
    <td align="center" class="onpanel" id="wr_1"></td>
  </tr>
  <tr>
    <td><img src="http://javascript.ru/forum/images/panel_but.gif" width="240" height="12"></td>
  </tr>
</table>
</div>
 
 
</html>


...вот здесь. В строковой переменной str_1 содержится ссылка (<a href="url">Подробнее...</a>). Так вот после того, как панелька с текстом вылезет, на ссылку, прописавшуюся туды перейти нельзя, а хочется))
Спасибо.

Последний раз редактировалось SunYang, 10.09.2008 в 00:23.
Ответить с цитированием
  #8 (permalink)  
Старый 10.09.2008, 08:58
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

всё очень просто: при клике на ссылку происходит маусаут+маусовер на диве и перерисовка содержимого (то есть удаление бывшей ссылки + отрисовка новой такой же). Вот перехода и не происходит.

Вешаем проверку на нажатие ссылки и запрещаем в этом случае перерисовку:
ss = false;
str_1 = '<a href="http://www.yandex.ru/" onmousedown="ss=true">343534</a>Рейтинг Медведева вырос. Лидеры ОДКБ приняли декларацию о событиях на Кавказе. В России запретят продажу 92-го бензина.Райс: международная изоляция России растёт. Против России в Европе ведется информационная война. В Россию придет премиум-марка';
 
function move(idelem, wrstr) {
	if (ss) return;
	var newid = idelem.id.replace(/\D*(\d*)\D*/,"wr_$1");
	if (wrstr) {
		clearTimeout(this.timer);
		document.getElementById(newid).innerHTML = wrstr;
	}
	else {
		this.timer = setTimeout('document.getElementById("'+newid+'").innerHTML = "'+wrstr+'";',100);
	}
}

Последний раз редактировалось ZoNT, 11.09.2008 в 15:26.
Ответить с цитированием
  #9 (permalink)  
Старый 11.09.2008, 13:15
Профессор
Отправить личное сообщение для SunYang Посмотреть профиль Найти все сообщения от SunYang
 
Регистрация: 22.02.2008
Сообщений: 189

Спасибо огромное!!!
Ответить с цитированием
Ответ


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

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