Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Java / JavaScript


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

vladisslav
Статус: 5-й класс
Рейтинг: 941
∙ повысить рейтинг »
Botsman
Статус: Профессионал
Рейтинг: 523
∙ повысить рейтинг »
Evgenijm
Статус: 10-й класс
Рейтинг: 305
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Java/JavaScript

Номер выпуска:654
Дата выхода:13.11.2009, 14:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:512 / 111
Вопросов / ответов:1 / 3

Вопрос № 174048: Добрый день! я делаю для школы сайт музея, опыта мало... есть скрипт: <script type="text/javascript"> <!-- var cId1; function showLayer1(id) { if(cId1) document.getElementById(cId1).style.display = "none&quo...



Вопрос № 174048:

Добрый день! я делаю для школы сайт музея, опыта мало... есть скрипт:
<script type="text/javascript">
<!--
var cId1;
function showLayer1(id) {
if(cId1) document.getElementById(cId1).style.display = "none";
document.getElementById(id).style.display = "block";
cId1 = id;
}
showLayer("t1");
-->
</script>
работает отлично. проблема в том, что до того как начинаешь челкать по меню блок для информации чист. То есть при загрузке сайта информации нет . не знаю понятноли изложил. На всякий случай сайт выложен school233.jino-net.ru
Помогите. Мы обратились в друй раздел, там где по web дизайну - они предложили за 3 тысячи доделать сайт...

Отправлен: 07.11.2009, 15:43
Вопрос задал: Словик.В.А, Посетитель
Всего ответов: 3
Страница вопроса »


Отвечает Товарищ Бородин, Академик :
Здравствуйте, Словик.В.А.
Кажется, я понимаю, в чем дело. Дело в том, что все "страницы" по умолчанию грузятся посредством Javascript`а. Для загрузки информации должен быть произведен клик по ссылке в меню, но при загрузке сайта-то этого клика еще никто не сделал! Значит, во-первых, чтобы при загрузке сайта появлялась информация, надо создать атрибут onload для тега BODY. По onload должен имитироваться клик по какой-либо из ссылок - придумайте сами, какая страница у Вас "главная". По той ссылке и надо будет произвести клик. Чтобы было проще это сделать, для каждой из ссылок придумайте атрибут id. После этого Вы сможете иметь доступ к объекту любой из этих ссылок с помощью уже использованного Вами метода document.getElementById. Выбираете ссылку, потом заставляете браузер сымитировать клик по ней. Выглядит так:

document.getElementById('some-id').click();

Только определитесь, по какой ссылке кликать будете.

Во-вторых... По пробуйте отключить Javascript в своем браузере, и Вы увидите, что все работает еще гораздо хуже. Попросту говоря, не работает ничего. Опираться на один лишь Javascript - это неправильно. Он может помочь облегчить загрузку страниц, чтобы не перезагружалась вся страница, а лишь заменялось содержимое какого-то ее блока, но не использовать при этом традиционный способ с перезагрузкой - неправильно, потому что у небольшой, но значительной части пользователей Javascript отключен, и они ничего не смогут посмотреть.

В-третьих, поглядите на Ваш сайт через окно браузера Mozilla Firefox. Не уверен, что все, что Вы там увидите, Вам понравится, поэтому обращаю Ваше внимание.

С уважением, Товарищ Бородин

Ответ отправил: Товарищ Бородин, Академик
Ответ отправлен: 07.11.2009, 16:01

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256265 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает vladisslav, 5-й класс :
    Здравствуйте, Словик.В.А.
    Вариантов тут может быть много:

    1. имитировать щелчок по ссылке "главная", как тут уже предлагали
    заменить

    Код:
    <a onclick="showLayer('t1');showLayer1('t11') " href="#">  Главная</a>

    на
    Код:
    <a id='a_main' onclick="showLayer('t1');showLayer1('t11');return false; " href="#">  Главная</a>

    (добавил return false, чтобы избежать появления # в адресной строке )
    и куда-нибудь ближе к концу страницы добавить
    Код:
    <script type='text/javascript'>
    document.getElementById('a_main').click();
    </script>


    2. Просто выполнить нужный код в конце страницы:
    ближе к концу страницы добавить
    Код:
    <script type='text/javascript'>
    showLayer('t1');showLayer1('t11');
    </script>


    3. Повесить обработчик, делающий (1) или (2) на событие load:
    Код:
    <script type='text/javascript'>
    if (document.addEventListener)
    {
    document.addEventListener('load', function(ev){showLayer('t1');showLayer1('t11');}, false);
    } else if (document.attachEvent)
    {
    document.onload=function(ev){showLayer('t1');showLayer1('t11');}
    }
    </script>

    в любом удобном месте страницы.

    4. Можно сразу для divа главной прописать display:block и соответственно установить переменную cId1 в значение id данного блока.

    Ответ отправил: vladisslav, 5-й класс
    Ответ отправлен: 07.11.2009, 21:19

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256270 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Палян Александр Михайлович, 5-й класс :
    Здравствуйте, Словик.В.А.

    Как я понимаю данный кусок скрипта у Вас находится в начале страницы. А значит вызов функции showLayer("t1"); валится с ошибкой так как еще не загрузились все необходимые элементы. Я предлагаю просто заключить эту строку в window.onload
    короче сделать так:

    window.onload = function () {
    showLayer("t1");
    }

    Ответ отправил: Палян Александр Михайлович, 5-й класс
    Ответ отправлен: 08.11.2009, 09:46

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256278 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.10 от 13.11.2009

    В избранное