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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с отображением слоев 
:(
    Опции темы
peaceduke
Дата 3.9.2007, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет. На форуме много схожих тем, но ответа в них я так и не нашел. Проблема в следующем. И имеется слой 
Код

<div id="aс" style="border:1px solid #7F9DB9;clear:both;text-align:left;position:absolute;width:200px;background: #eeeeee; display : none;"></div>


Далее в javascript коде динамически добавляются в innerHTML другие слои, в которых находятся span-ы. Возникает проблема с отображением слоя. Обновление работает нормально, т.е. слои со span-ами добавляются. Но вот при скрытии слоя, он как бы остается, только без содержимого, просто полосочка. В эксплорере она ровно в одну строку, в опере узенькая. Для скрытия используется следующий код:
Код

function show(divid)
{
    if (document.getElementById(divid).style.display == 'none')
    {
        document.getElementById(divid).style.display = 'block';
    }
}

function hide(divid)
{
    if (document.getElementById(divid).style.display == 'block')
    {
        document.getElementById(divid).style.display = 'none';
    }
}

Помогите пожалуйста разобраться, столько мучаюсь, не могу понять, что не так. Как можно заставить работать его в разных браузерах?
PM MAIL   Вверх
Rigel
Дата 3.9.2007, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.7.2007
Где: Москва

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



Нужно смотреть весть текст - скорее всего, где-то забыт или пробел или параграф - и к слою это не имеет отношения. Если слой скрыт, то он не занимает места. Вообще. И в любом браузере. А если что-то занимает место, значит оно не в слое.
--------------------
С уважением. Rigel. http://www.smoliy.ru
PM MAIL WWW ICQ   Вверх
peaceduke
Дата 3.9.2007, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А по какой причине слой может вообще не отображаться? То есть, если его по умолчание сделать скрытым, то он  не появляется, когда должен, вообще не появляется, а если сделать видимым, то появляется описанный мной глюк.

Вот код, который записывается в иннер:

Код

keysar = tmpstr.split(',');
var keysplitcount = [];
                    
for(var i = 0; i < keysar.length; i++) 
{
keysplitcount = keysar[i].split(":");
html += '<div id="line' + (i + 1) + '" class="keyline" type="clear:both;color:#7F9DB9;cursor:default;">';
html += '<span class="keywords" style="float:left;color:#555555;">' + keysplitcount[0].replace("_"," ") + '</span><br>';
html += '<span class="count" style="float:right;font-size:1em;">' + keysplitcount[1] + '</span><br>';
html += "</div>";
}
                    
document.getElementById("autocomplete").innerHTML = html;


Короче нужно сделать что то вроде google suggesst.

PM MAIL   Вверх
peaceduke
Дата 3.9.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди, помогите плиз! Очень нужно сделать. Неужели никто не сталкивался с проблемой? Выяснил, что слой полностью скрывается, если прировнять innerHTML пустую строку, но после это вышеописанная процедура не работает, слой больше не появляется.
PM MAIL   Вверх
Ghirik
Дата 3.9.2007, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Выложите страничку с глюком, но удалите из неё всё лишнее. 


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
peaceduke
Дата 3.9.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Выложите страничку с глюком, но удалите из неё всё лишнее.  


Путем экспериментов выяснилось, что дело не в страничке. Все заключено в коде, который я привел. Я создал отдельный html файл, вручную создал все слои и спаны, все работает нормально. Получается, что ошибка либо в коде, который создает вложенные слои со спанами, либо в данных, который я получаю, есть какие то спецсимволы. Может у вас есть мысли, от чего такое может быть? Код я в общем то весь освновной привел, остальная часть это аджакс и функции для работы со слоями. Выкладываю на всякий случай код работающей статичной странички, нужно то же самое, только в динамике. Если будут предложения, пишите пожалуйста!

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
  <title></title>

  <script language="javascript">
var SearchReq;
var index = 0;
var key = "";

function show(divid)
{
    if (document.getElementById(divid).style.display == 'none')
    {
        document.getElementById(divid).style.display = 'block';
    }
}

function hide(divid)
{
    if (document.getElementById(divid).style.display == 'block')
    {
        document.getElementById(divid).style.display = 'none';
    }
}


function hidenotkeys()
{
    if (document.getElementById("autocomplete").style.display == 'block')
    {
        document.getElementById("autocomplete").style.display = 'none';
    }
    else
    {
         document.getElementById("autocomplete").style.display = 'block';
    }
}

</script>
</head>
<body onclick="hidenotkeys()">

<form id="Search" method="post" action="/search/default.aspx" style="MARGIN: 0px">
                    <table cellSpacing="0" cellPadding="3" width="100%" bgColor="#333333" border="0">
                        <tr>
                            <td style="BORDER-LEFT: #cccccc 3px solid" vAlign="middle" align="right" width="95"
                                bgColor="#5b5b5b">
                                <div class="searchtitle" align="right" nowrap>Поиск по базе:</div>
                            </td>
                            <td vAlign="middle" align="left">
                                <INPUT type="text" id="searcharea" name="tbSearch" onKeyUp="query()" style="WIDTH:200px"
                                    autocomplete="off"><br>
                                <div id="autocomplete" style="border:1px solid #7F9DB9;clear:both;text-align:left;position:absolute;width:200px;background: #eeeeee; display : none;">
                                    <div id="line1" class="keyline" type="clear:both;color:#7F9DB9;cursor:default;">
                                        <span class="keywords" style="float:left;color:#555555;">cpu</span>
                                        <span class="count" style="float:right;font-size:1em;">1</span>
                                    </div><br>
                                    <div id="line2" class="keyline" type="clear:both;color:#7F9DB9;cursor:default;">
                                        <span class="keywords" style="float:left;color:#555555;">ram</span>
                                        <span class="count" style="float:right;font-size:1em;">2</span>
                                    </div><br>
                                    <div id="line3" class="keyline" type="clear:both;color:#7F9DB9;cursor:default;">
                                        <span class="keywords" style="float:left;color:#555555;">video</span>
                                        <span class="count" style="float:right;font-size:1em;">3</span>
                                    </div><br>
                                    <div id="line4" class="keyline" type="clear:both;color:#7F9DB9;cursor:default;">
                                        <span class="keywords" style="float:left;color:#555555;">hdd</span>
                                        <span class="count" style="float:right;font-size:1em;">4</span>
                                    </div><br>
                                    <div id="line5" class="keyline" type="clear:both;color:#7F9DB9;cursor:default;">
                                        <span class="keywords" style="float:left;color:#555555;">mon</span>
                                        <span class="count" style="float:right;font-size:1em;">5</span>
                                    </div><br>
                                </div>
                            </td>
                            <td vAlign="middle" width="47"><INPUT type="submit" value="найти" id="searchbutton"></td>
                        </tr>
                    </table>

</FORM>

</body>

</html>


Это сообщение отредактировал(а) peaceduke - 3.9.2007, 10:35
PM MAIL   Вверх
SelenIT
Дата 3.9.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(peaceduke @  3.9.2007,  10:14 Найти цитируемый пост)
либо в данных, который я получаю, есть какие то спецсимволы

Тегов там нет случайно? Можно посмотреть эти самые данные (напр., под FireBug)?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Ghirik
Дата 3.9.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скорее всего виноваты стили, например style=border:1px.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
peaceduke
Дата 3.9.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Тегов там нет случайно? Можно посмотреть эти самые данные (напр., под FireBug)?

Нет, тегов точно нет. Там сгенерированная строка, в которой перечислены через запятую итемы, а через двоеточие их число, больше нет ничего. Просто странно, что в статичной страницу все работает нормально.

Цитата

Скорее всего виноваты стили, например style=border:1px.

Попробую с этим разобраться, спасибо за совет!
PM MAIL   Вверх
SelenIT
Дата 3.9.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



peaceduke, только сейчас заметил: а что это за атрибут type у вложенных дивов? Может, имеется в виду style (судя по значениям)?

А версия Ghirikа представляется мне крайне маловероятной... smile 


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Ghirik
Дата 3.9.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

а что это за атрибут type у вложенных дивов?

Точно style.

Цитата

А версия Ghirikа представляется мне крайне маловероятной...  

Полностью Вас поддерживаю smile 
У меня подобное было стаблицами, вот и подумалось. Так же в некоторых браузерах отображалась полоска, убрал бордюр - полоска исчезла. Но, возможно, это было при задании нулевой высоты строки.

Это сообщение отредактировал(а) Ghirik - 3.9.2007, 22:53


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
peaceduke
Дата 4.9.2007, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

а что это за атрибут type у вложенных дивов? Может, имеется в виду style (судя по значениям)?


Спасибо. Мой косяк. Но проблемы с отображением это не решило!!! :( Но избавился от другой проблемы, с которой хотел позже разобраться. У кого еще какие подозрения есть? Может у кого получалось воспроизвести глюк? Щас вот как раз пришел на работу, буду дальше разбираться. Никогда столько не возился с такими мелочами, прям в голову не укладывается!

P.S. Причем странно то, что именно в таком виде все в статике работало.

Это сообщение отредактировал(а) peaceduke - 4.9.2007, 07:29
PM MAIL   Вверх
peaceduke
Дата 4.9.2007, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Отпишусь еще раз! smile При установке атрибута display в none(в html коде), слой больше не появляется, несмотря на то, что функция отрабатывает нормально. При установке в block, слой отображается узкой полоской. Все функционирует нормально, за исключение того, что эта полоска больше не скрывается, выглядит как будто это другой слой, который как бы под моим находится. У меня есть предположения, что слой может у кого то унаследовать свойства, которые так на него влияют, т.к. проект большой. Пробовал прописать ему class="ac", ничего не изменилось. Блин, я в ступоре! :(

Это сообщение отредактировал(а) peaceduke - 4.9.2007, 09:57
PM MAIL   Вверх
Ghirik
Дата 4.9.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сложно что-либо предполагать, единственное, что я бы посоветовал, это последовательно исключать элементы из страницы, и делать проверку после каждого исключения.

Добавлено через 5 минут и 7 секунд
Затрите "в тупую" все стили.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
peaceduke
Дата 5.9.2007, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Сложно что-либо предполагать, единственное, что я бы посоветовал, это последовательно исключать элементы из страницы, и делать проверку после каждого исключения.


Так и сделал! Добился кое-каких результатов. В общем, все довольно странно. Функция show(), служащая для отображения слоев по таинственной причине не работала, алерт перед вызовом функции срабатывает, внутри нет. Исправлено путем переименования функции. Кусок слоя так и не хотел исчезать, я просто его скрываю, когда не нужно и все. В принципе все работает, но только в эксплорере. Опера пишет следующее:

Event thread: keyup
Error:
name: Error
message: Security violation

Что может быть причиной ошибки? И почему в эксплорере работает. В файрфоксе тоже, что в опере.

P.S. В файрфоксе пишет Ошибка: window.event has no properties

Это сообщение отредактировал(а) peaceduke - 5.9.2007, 08:00
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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