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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> объявил две функции и остальной код не работает, не могу разобраться почему... 
:(
    Опции темы
wowka19
Дата 12.12.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Из-за функций "getList()" и "getTags()" не работает код в функции "onload=function()".
Если их закомментировать, то код работает
Пусть вас не смущает, что "getList()" и "getTags()" не используются - это пока...

Код

function getList( var id, q, tag )
{
    var RequestList = new XMLHttpRequest();
    
    RequestList.onreadystatechange = function()
    {
        if ( RequestList.readyState == 4 )
        {
            RequestList.array = eval( RequestList.responseText );
            
            RequestList.UL = document.createElement( 'UL' );
            
            for ( var i = 0; i < RequestList.array.length; ++i )
            {
                RequestList.text = document.createTextNode( RequestList.array[i].title );
                RequestList.LI = document.createElement( 'LI' );
                RequestList.A = document.createElement( 'A' );
                RequestList.A.setAttribute( 'href', '/article.php?id=' + RequestList.array[i].id );
                RequestList.A.appendChild( RequestList.text );
                RequestList.LI.appendChild( RequestList.A );
                RequestList.UL.appendChild( RequestList.LI );
            }
            
            Articles.appendChild( RequestList.UL );
        }
    }
    RequestList.param = 'q=' + q;
    if ( id != 0 )
    {
        RequestList.param += ( '&id=' + id );
    }
    if ( tag != 0 )
    {
        RequestList.param += ( '&tag=' + tag );
    }
    
    RequestList.open( 'GET', '/list.php?' + RequestList.param, true );
    RequestList.send( null );
    
    return RequestList.UL;
}

function getTags( var id, q )
{
    var RequestTags = new XMLHttpRequest();
    
    RequestTags.onreadystatechange = function()
    {
        if ( RequestTags.readyState == 4 )
        {
            RequestTags.array = eval( RequestTags.responseText );
            
            RequestTags.UL = document.createElement( 'UL' );
            
            for ( var i = 0; i < RequestTags.array.length; ++i )
            {
                RequestTags.text = document.createTextNode( RequestTags.array[i].name );
                RequestTags.LI = document.createElement( 'LI' );
                RequestTags.A = document.createElement( 'A' );
                RequestTags.A.setAttribute( 'href', '/article.php?id=' + RequestTags.array[i].id );
                RequestTags.A.appendChild( RequestTags.text );
                RequestTags.LI.appendChild( RequestTags.A );
                RequestTags.UL.appendChild( RequestTags.LI );
            }
            
            Tags.appendChild( RequestTags.UL );
        }
    }
    RequestTags.param = 'q=' + q;
    if ( id != 0 )
    {
        RequestTags.param += ( '&id=' + id );
    }
    
    RequestTags.open( 'GET', '/tags.php?' + RequestTags.param, true );
    RequestTags.send( null );
    
    return RequestTags.UL;
}

window.onload = function()
{
    /* Здесь реализуется механизм вкладок 
         Он успешно работает если закомментировать/удалить
         объявления верхних двух функций */

    var LTab = document.getElementById( 'left' );
    var RTab = document.getElementById( 'right' );
    var Articles = document.getElementById( 'articles' );
    var Tags = document.getElementById( 'tags' );
    
    LTab.onclick = function()
    {
        Tags.style.display = 'none';
        Articles.style.display = 'block';
    }
    
    RTab.onclick = function()
    {
        Articles.style.display = 'none';
        Tags.style.display = 'block';
    }
}

PM MAIL   Вверх
$дмитрий
Дата 12.12.2011, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



В коде 2 синтаксические ошибки, неверно объявляешь параметры функций
PM MAIL   Вверх
wowka19
Дата 12.12.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, а то я бы еще часа 2-3 искал... Все-таки после C++ лишний "var" довольно логично добавлен - я ведь ОБЪЯВЛЯЮ новые переменные (пусть и локальные)..
Тогда напрашивается другой вопрос: а в этом коде var тоже лишний:
Код

for (var i = 0; i < array.length; ++i ){ /* или он нужен? */}

PM MAIL   Вверх
$дмитрий
Дата 12.12.2011, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



Цитата

а то я бы еще часа 2-3 искал

Для таких случаев есть консоль ошибок

Цитата

я ведь ОБЪЯВЛЯЮ новые переменные

В JS ключевое слово var имеет несколько другой смысл нежели в C++

Цитата

а в этом коде var тоже лишний

Нет, здесь он уместен
PM MAIL   Вверх
newbee
Дата 12.12.2011, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


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

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



Цитата($дмитрий @  12.12.2011,  21:41 Найти цитируемый пост)
В JS ключевое слово var имеет несколько другой смысл нежели в C++
В С++ этого смысла вообще нет smile

А в JS AFAIK var можно использовать внутри блока кода, чтобы объявить локальную переменную. Внутри входных параметров, которые по самой свои сути локальны, использование var семантически неверно.


--------------------
You're face to face
With man who sold the world
PM   Вверх
Stolzen
Дата 13.12.2011, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

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



Цитата(newbee @  12.12.2011,  21:55 Найти цитируемый пост)
А в JS AFAIK var можно использовать внутри блока кода, чтобы объявить локальную переменную.

В js область видимости ограничивается не блоком кода, а функцией. И поэтому переменная i все равно будет видна за пределами цикла.

Цитата(wowka19 @  12.12.2011,  21:32 Найти цитируемый пост)
for (var i = 0; i < array.length; ++i ){ /* или он нужен? */}

Я обычно так делаю:

Код

var i, len = array.length;

for (i = 0; i < len; i += 1) {
    // do stuff
}


В принципе он не лишний, однако для избежания сюрпризов лучше выносить var за пределы циклов, ифов, etc. 

Цитата($дмитрий @  12.12.2011,  21:41 Найти цитируемый пост)
В JS ключевое слово var имеет несколько другой смысл нежели в C++

C# имеется ввиду? 


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


 




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


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

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