Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание элементов createElement в IE. (https://javascript.ru/forum/misc/50-sozdanie-ehlementov-createelement-v-ie.html)

Phoenix 24.09.2007 11:22

Создание элементов createElement в IE.
 
Доброго времени суток.
У меня возникла маленькая проблема. Как всегда IE выделился, и возникли проблемы с оптимизацией кода под него.

У меня есть код:
<script>
function add(){
 var aEl = document.createElement("a");
 aEl.href="";
 aEl.text="Выход";
 document.getElementById("text").appendChild(aEl);//эту строчку игнорирует, ошибку не выдает.
 document.getElementById("text").appendChild(document.createTextNode( "Two" ));//эта строчка работает нормально.
}
</script>

<a onClick='add()'>Нажми</a>
<div id='text' name='text'></div>


Я думаю что проблема в создании элемента <a>. Читал, что IE очень придирчив к созданию элементов. Поскажите в чем может быть проблема.

Илья Кантор 26.09.2007 13:56

А что надо сделать? Чего добиваешься?

По существующему коду - aEl.text не надо ставить, вообще свойство text не надо трогать.

IE придирчив к свойству name в <a>, у тебя его нет, а в остальном он вполне ок.

Вот пример работающего кода:

var aEl = document.createElement("a")
aEl.innerHTML = 'Выход'
aEl.onclick = function() { 
  // все равно что href="#vyhod"
  document.location.href='vyhod' 
}
document.getElementById('text').appendChild(aEl)


Кстати, атрибут name у div не бывает, не надо его туда ставить.

Phoenix 26.09.2007 14:11

Спасибо большое за помощь! Понял в чем ошибка была.

У тебя опечатка, что бы другие потом смогли понять...
"a.onclick = function() {"
тут aEl, так все верно :)

В твоем коде все же нет тега Name... Он нужен или нет для IE?

Я делаю авторизацию используюя AJAX. Вот и подгоняю под все браузеры)

Илья Кантор 26.09.2007 17:45

name в <a name=..> нужно, чтобы сделать метку, НА которую надо переходить.

А у тебя, как я понял, не метка создается, а делается переход на уже созданную, так что зачем тут name?

P.S код поправил, спасибо.

Phoenix 26.09.2007 18:15

У меня метка делается, которая переходит на эту же страницу(обновляет ее) тем самым сбрасывает все настройки поумолчанию(AJAX, в процессе работы много настроек меняться будет). Делаю без name и все работает в IE.

Еще один способ есть, но незнаю насколько он оптимален(скорость добавления и правильность):
document.getElementById('text').innerHTML+='<a href="">Выход</a>';

Илья Кантор 26.09.2007 18:23

Метка это метка. Она никуда не переходит, она - ЦЕЛЬ перехода.
<a name="label">метка</a> - это метка, НА нее переходят через href='#label'

Phoenix 26.09.2007 19:43

А... понял, это как якоря... сразу просто не понял немного. Спасиб, теперь понятно!


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