Помогите понять капризы IE

axper

Новичок
Помогите понять капризы IE

Всем привет.
Опишу основную часть кода...


var string = '10@@20@aaa@bbb';
result = string.split("@@");

1) document.getElementById('SaveCountLines').value = result[0]; //тег input

2) document.getElementById('SavePvtCountLines').value = result[1]; //тег input

3) document.getElementById('Msg').innerHTML += result[2]; //тег div

4) document.getElementById('PvtMsg').innerHTML += result[3]; //тег div


result[2] и result[3] содержат текст вроде "aaaaaa<br> bbbbbb<br> cccccc<br>...."

так вот капризничает последняя строка..то есть IE отображает только часть текста,записываемого в PvtMsg...Если я удаляю 3-ю строку кода, то в PvtMsg всё корректно записывается и отображается...
Вобщем суть проблемы такова : Если я пытаюсь записать в Msg и PvtMsg - IE не полностью отображает содержимое PvtMsg, а в Opere всё работает.

Надеюсь кто-то меня понял =)
Заранее благодарен.
 

BRat

o_0
у тега div давно вобще св-во value появилось?
div ам устанавливать innerHTML, инпутам value
 

axper

Новичок
BRat
прошу прощения, запутался пока копировал сюда...

-~{}~ 18.03.07 10:54:

неужели никто кроме BRat не откликнется? =)
 

denver

?>Скриптер
axper
var string = '10@@20@aaa@bbb';
result = string.split("@@");
В обоих IE6 и Опере9 в результате твоего примера:
10
20@aaa@bbb
undefined
undefined

Чем блин путать других - лучше б упростил свою проблему до минимума кода. Чтобы можно было повторить и убедиться. Пока что проблемы нет. Всё работает правильно!

-~{}~ 18.03.07 13:44:

ЗЫ.
запутался пока копировал сюда...
Не надо изменять здесь. Убедись сначала что этот код - тот что нужен. У себя в обоих браузерах. И без изменений копируй сюда.
 

axper

Новичок
Автор оригинала: denver
В обоих IE6 и Опере9 в результате твоего примера:
10
20@aaa@bbb
undefined
undefined
Ты наверно что-то неправильно сделал, потому что у меня в результате именно так как я написал, а точнее:
PHP:
var string = '10@@20@@aaaaaa<br> bbbbbb<br> cccccc<br>@@aaaaaa<br> bbbbbb<br> cccccc<br>';
Пока что проблемы нет. Всё работает правильно!
Ты хоть суть проблемы понимаешь? Попытаюсь внятнее объяснить..

При обработки переменной string функцией split() получаются 4 строки:
PHP:
1) result[0] = 10;  
2) result[1] = 20;  
3) result[2] = 'aaaaaa<br> bbbbbb<br> cccccc<br>';  
4) result[3] = 'aaaaaa<br> bbbbbb<br> cccccc<br>';
так вот первые 3 строки вставляются корректно, а четвертая строка вставляется до первого тега <br>, то есть только 'aaaaaa<br>'. Вот в этом и есть вся проблема.
Надеюсь так будет понятнее.
 

dimagolov

Новичок
Автор оригинала: axper
так вот первые 3 строки вставляются корректно, а четвертая строка вставляется до первого тега <br>, то есть только 'aaaaaa<br>'. Вот в этом и есть вся проблема.
innerHTML вообще-то не предназначен для создания узлов модели DOM, которыми теги <br> являются. Разные броузеры могут реагировать на такие создания по-разному. Скорее всего проблема с последней строчкой в том, что DOM еще не перестроился после 3-й строчки и отказывается создавать новые ноды. Если писать по-человечески (createElement, insertNode) влом, то поставь вызов последней строчки в setTimeout на 50-500мс - должно попустить.
См пример про использование innerHTML : http://www.w3schools.com/js/tryit.asp?filename=try_dom_anchor_href
 

dimagolov

Новичок
это от кривизны реализации в каждом броузере индивидуально.
 
Сверху