Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.08.2010, 15:00
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

Символ строки по индексу в IE
Здравствуйте, уважаемые.
Как так случилось, что в IE условие ложно?
var str = 'I love you tetya Motya!'
if(str[0]=='I'){
   document.write('Yes :)');
}else{
   document.write('No :(');
}

Разве символ строки нельзя получить по его индексу? Или это фишка JVscriptа
Спасибо.

Последний раз редактировалось vahrusha, 17.08.2010 в 18:34.
Ответить с цитированием
  #2 (permalink)  
Старый 17.08.2010, 15:10
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

ваше условие истинно, и работает в IE
Ответить с цитированием
  #3 (permalink)  
Старый 17.08.2010, 18:13
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

Хорошо, вот прилагаю скрин, на нем код и результат работы в браузерах: Хром, Файрфокс, Опера и, собственно, Осел 6-ой и 8-ой версий.

Я еще могу предположить, что IETester может как-то глючит, но IE8 у меня самый настоящий от Microsoft, который прилагается к win7.
Поэтому как минимум в данном приведенном случае IE считает, что условие ложно
Например, вот на это:
var str = 'Some text';
document.write(str[5]);

IE выводят undefined.
Безобразие...

Последний раз редактировалось vahrusha, 17.08.2010 в 18:47.
Ответить с цитированием
  #4 (permalink)  
Старый 17.08.2010, 18:33
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

"I love you tetya Motya!".charAt(0)
Ответить с цитированием
  #5 (permalink)  
Старый 17.08.2010, 18:54
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

Благодарю за метод.
Вычитал, что обращение к символам, как к элементам массива не стандартизировано и некоторыми браузерами не поддерживается.
Опытным путем выяснилось, что некотороые браузеры - это эксплореры.
С уважением.
Ответить с цитированием
  #6 (permalink)  
Старый 17.08.2010, 19:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

скрин из ие8 с прежней версией скрипта

а чтоб везде работало можно так
<script language="JavaScript" type="text/javascript">
var str = 'I love you tetya Motya!'
str = str.split('');
if(str[0]=='I'&&str[7]=='y'){
   document.write('Yes :)');
}else{
   document.write('No :(');
}
</script>

Последний раз редактировалось рони, 17.08.2010 в 19:12.
Ответить с цитированием
  #7 (permalink)  
Старый 17.08.2010, 19:36
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

Ну Вы же не думаете, что я Вас обманываю. У меня IE8 выдает то, что на скрине.
Не знаю, может быть дело в доктайпе, у Вас я вижу он задан? Не думал, что он на работу javascript влияет.
Спасибо.

Добавлено:
Установил доктайп xhtml 1.0 strict, и IE8 стал считать условие истинным. IE6-7 как раньше - ложным.

Последний раз редактировалось vahrusha, 17.08.2010 в 19:39.
Ответить с цитированием
  #8 (permalink)  
Старый 17.08.2010, 21:08
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

vahrusha, вы невнимательны, рони показал, что строку можно преобразовать в массив односимвольных строк:
Сообщение от рони
str = str.split('');
Ответить с цитированием
  #9 (permalink)  
Старый 17.08.2010, 21:36
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

Сообщение от Octane Посмотреть сообщение
vahrusha, вы невнимательны, рони показал, что строку можно преобразовать в массив односимвольных строк:
Это я увидел, я ответ написал к фразе "скрин из ие8 с прежней версией скрипта" и к, собственно, скрину.

Всем отписавшимся спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать 1-й символ строки заглавным YISHIMITSY Общие вопросы Javascript 16 18.03.2015 21:47
Как удалить этот символ из строки? PAMAC Серверные языки и технологии 3 14.08.2010 17:27
Отфильтровать строки в таблице по заданным критериям Hag1989 Общие вопросы Javascript 0 03.12.2009 02:06
Как удалить последний символ строки? PAMAC Events/DOM/Window 5 18.10.2009 15:01
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31