Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Символ строки по индексу в IE (https://javascript.ru/forum/css-html-internet-explorer/11309-simvol-stroki-po-indeksu-v-ie.html)

vahrusha 17.08.2010 15:00

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

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

Gvozd 17.08.2010 15:10

ваше условие истинно, и работает в IE

vahrusha 17.08.2010 18:13

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

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

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

e1f 17.08.2010 18:33

"I love you tetya Motya!".charAt(0)

vahrusha 17.08.2010 18:54

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

рони 17.08.2010 19:06

Вложений: 1
скрин из ие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>

vahrusha 17.08.2010 19:36

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

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

Octane 17.08.2010 21:08

vahrusha, вы невнимательны, рони показал, что строку можно преобразовать в массив односимвольных строк:
Цитата:

Сообщение от рони
str = str.split('');


vahrusha 17.08.2010 21:36

Цитата:

Сообщение от Octane (Сообщение 67724)
vahrusha, вы невнимательны, рони показал, что строку можно преобразовать в массив односимвольных строк:

Это я увидел, я ответ написал к фразе "скрин из ие8 с прежней версией скрипта" и к, собственно, скрину.

Всем отписавшимся спасибо.


Часовой пояс GMT +3, время: 19:43.