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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Упертый оператор IF, Ни в какую нехочет видеть значение 
V
    Опции темы
kaa
  Дата 14.6.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Назрела очередная проблема. Есть код 


Код

var parent_window = window.parent;
        var message_node_value = parent_window.frame5.document.getElementById("PrivateMessage").firstChild.nodeValue;
        //Смотрю что у миня там есть, для отладки
        alert(message_node_value);
        
        if(message_node_value == "y")
        {
            alert(message_node_value);
            var message_text = parent_window.frame5.document.getElementById("PrivateMessageText").firstChild.nodeValue;
            alert(message_text);
            var message_bloc = document.getElementById("message");
        
            var new_messageNode = document.createElement("p");
            var new_message_text = document.createTextNode(message_text);
        
            message_bloc.appendChild(new_messageNode);
            message_bloc.lastChild.appendChild(new_message_text);
        }


В общем отладочный алерт исправно выводит строку "y", но в проверке на выполнение условия равенства вилимо решается что "y" это не "y" и приспокойно пролетает все операторы внутри IF-фа... Почему так может быть? Я в книжецках порылся - ничего такого ненашёл...  
PM MAIL   Вверх
Sardar
Дата 15.6.2006, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



kaa, только одно, y (игрек) не равно у (русская буква у)  smile  


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
kaa
Дата 15.6.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Токачто перепроверил - везде игрэк блин!  smile   smile   smile 
Да и по написанию сразуб я заметил - у мя в редакторе они отличаются по написанию... 
PM MAIL   Вверх
vasac
Дата 15.6.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а
Код

message_node_value.localeCompare( "y" )

что показывает? 
PM WWW   Вверх
kaa
Дата 15.6.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



vasac,  Еденицку! (1)
 А что это за localeCompare? Первый раз слышу про такое... 
PM MAIL   Вверх
Sardar
Дата 15.6.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Цитата(kaa @  15.6.2006,  16:15 Найти цитируемый пост)
Токачто перепроверил - везде игрэк блин!

kaa, чудес не бывает. Если сравнение не проходит, то в message_node_value лежит не y. Просто пробел, другой регистр, что угодно может быть там, но только не игрек. 

Цитата(kaa @  15.6.2006,  16:38 Найти цитируемый пост)
 А что это за localeCompare? Первый раз слышу про такое...  

http://msdn2.microsoft.com/en-us/casyzyb5.aspx
Подтверждает идю с русской у smile 


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
kaa
Дата 15.6.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Понял, ща ссылку глянем... 



Хотя нифига пока непонял...
 

Это сообщение отредактировал(а) kaa - 15.6.2006, 23:49
PM MAIL   Вверх
kaa
Дата 16.6.2006, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так, нашёл абшибку во фрейме который парсил:

Неправильный вариант:
Код

<div id="GlobalMessage">
    y
    <p id="GlobalMessageText">test</p>
</div>



Пральный вариант
Код

<div id="GlobalMessage">
    <p>y</p>
    <p id="GlobalMessageText">test</p>
</div>


Вот тока почему так немного непонимаю... Кстати попутно изменил сам скрипт, было:
Код


var message_node_value = parent_window.frame5.document.getElementById("PrivateMessage").firstChild.nodeValue;



Стало:
Код

var message_node_value = parent_window.frame5.document.getElementById("PrivateMessage").firstChild.firstChild.nodeValue;


Воот.. Кто-нить объясните пожалста почему отказывался работать первый вариант? 

Структура 5-го фрейма который парсит скрипт(старый вариант, при котором неработало):
Код

<html>
<head>
</head>

<body bgcolor="#F957F3">
<div id="OnLine">
    
    <div id="GlobalMessage">
    y
    <p id="GlobalMessageText">test</p>
    </div>
    <div id="PrivateMessage">
    y
    <p id="PrivateMessageText">test</p>
    </div>
    <p id="AddDelUserNew">y</p>
    <p id="ErrorMessage"></p>
    
    <div id="AddUser">
        <div>
            1
            <p>m</p>
        </div>
        <div>
            2
            <p>f</p>
        </div>
    </div>
    
    <div id="DelUser">
        
        
    </div>
        
</div>

</body>
</html>


Добавлено @ 23:55 
Sardar, Кстати спасибо за ответы! 
PM MAIL   Вверх
Sardar
Дата 17.6.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



kaa, ложить текст вместе с блочным элементом не есть гуд по определению. Естественно если требуеться взять часть содержимого ноды, то лучше эту часть обернуть в контейнер, опять же лучше в div/span,  т.к. не будет отступов и прочего от p, что имеет не пустые стили по дефолту.

DOM дерево сохраняет все переносы строк и оступы, т.е. первой нодой лежало раньше несколько пробелов и игрек, отсюдане было сравнения. Во втором случае ничего не будет работать если выставить доктайп, т.к. в firstChild будет лежать первые пробелы коими ты теги выравнивал smile

Отсюда верстаем 
Код
   <div id="PrivateMessage">
      <span>y</span>
      <p>test</p>
    </div>


А в JS:
Код
String.prototype.trim=function() {
   return this.replace(/^\s*/, '').replace(/\s*$/, '');
}

//.......


var message_node_value = parent_window.frame5.document.getElementById("PrivateMessage").getElementsByTagName("span")[0].firstChild.nodeValue;
alert("|"+message_node_value.trim()+"|");

if(message_node_value.trim() == "y") {
 alert("OK");
}
  


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
kaa
Дата 17.6.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


 




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


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

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