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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не устанавливаеться аттрибут name в ИЕ, почему? или я некорректно с ним работаю ... 
:(
    Опции темы
Irokez
Дата 21.7.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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



когда добавляю элемент в форму, то не все аттрибуты, которые я присваиваю элементу прописываются в HTML (возможно некправильно выразился), а именно - имя элемента, из-за чего вдальнейшем не работает другой скрипт.
в ФФ и Опере работает правильно, в ИЕ возникает вышеописанная проблема.
вот скрипт:
Код

<html>
<head>
<title>test</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99">
<input type="button" onClick="dest.appendChild(makeElement('text', 'somename', 'somavalue', 'someclass'))" />
<input type="button" onClick="show.value=dest.innerHTML" />
<form id="dest">
<textarea id="show" style="width: 100%; height: 300px;"></textarea>
</form>
<script language="JavaScript" type="text/javascript">
function makeElement(type, name, value, className)
{
    switch (type) {
        case 'text':
        case 'password':
        case 'hidden':
            var elem = document.createElement('input');
            elem.type = type;
            elem.name = name;
            elem.className = className;
            elem.value = value;
            break;
    }
    return elem;
}
var dest = document.getElementById('dest');
var show = document.getElementById('show');
</script>
</body>
</html>

Добавлено @ 10:01
т.е. нажимаю - на первую кнопку, она добавляет элемент в форму, нажимаю на вторую - она показывает HTML код формы, в ИЕ у добавленного элемента отсутствует имя, хотя я его и присвоил
PM   Вверх
Gregof
Дата 21.7.2005, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



IE не позволяет измениь имя уже созданного элемента.
Читай о свойстве name на msdn, а конкретно :
Цитата
The NAME attribute cannot be set at run time on elements dynamically created with the createElement method.

Для IE надо делать так:
Код

elem = document.createElement('<input name='+name+'>');

--------------------
Может поздно, может рано, нет у времени стоп-крана... (Чайф)
PM MAIL ICQ   Вверх
Irokez
Дата 21.7.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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



Gregof выручил, спасибо
PM   Вверх
Sardar
Дата 21.7.2005, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Но это не должно пугать, так как аттрибут существует(можешь его опросить), при отправке формы берёться корректное имя. Просто при сериализации в innerHTML IE отстойничает.

Также это наверное десйствует на нахождение элемента в коллекциях типа document.all, но про это следует забыть smile


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


индеец
***


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

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



Цитата(Sardar @ 21.7.2005, 13:23)
Но это не должно пугать, так как аттрибут существует(можешь его опросить), при отправке формы берёться корректное имя. Просто при сериализации в innerHTML IE отстойничает.

Также это наверное десйствует на нахождение элемента в коллекциях типа document.all, но про это следует забыть

при отправке - действительно берется корректное имя, но вот когда я пытаюсь получить элемент по имени (getElementsById) - у меня он не находился
PM   Вверх
Sardar
Дата 21.7.2005, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Всё потому что getElementById выбирает элемент по ID, а не по имени smile


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


индеец
***


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

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



Цитата(Sardar @ 21.7.2005, 14:33)
Всё потому что getElementById выбирает элемент по ID, а не по имени

ээ.. опечатка, конечно же getElementsByName ...
PM   Вверх
Irokez
Дата 21.7.2005, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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



а не подскажите выход из ситуации, если нужно в ИЕ уже созданному элементу все таки присвоить имя? я вижу только выход - создать похожий элемент и заменить первый через replaceChild, но вот как полегче скопировать объект? или есть другой выход?
PM   Вверх
Sardar
Дата 21.7.2005, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Скопировать обьект можно через cloneNode(true), только логики не пойму. Также не пойму зачем использовать getElementsByName если все элементы можно сгруппировать в каком нибудь слое.


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


индеец
***


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

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



Цитата(Sardar @ 21.7.2005, 21:47)
Скопировать обьект можно через cloneNode(true), только логики не пойму.

Если я скопирую элемент - то вроде бы не смогу в ИЕ поменять у него имя?

Цитата(Sardar @ 21.7.2005, 21:47)
Также не пойму зачем использовать getElementsByName если все элементы можно сгруппировать в каком нибудь слое.

потому что элементы располагаются в ячейках таблицы
PM   Вверх
Sardar
Дата 21.7.2005, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Можешь выбрать все инпуты по таблица.getElementsByTagName, затем выбрать те которые нужны.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

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



Цитата(Gregof @ 21.7.2005, 10:58)
elem = document.createElement('<input name='+name+'>');

Ребят, что-то я с этим не сталкивался '<input name='+name+'>' в createElement и ща в ступор войду.
Объясните, плз, это как??? Что, createElement оказывается можно как innerHTML использовать?


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Иль
Дата 22.7.2005, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

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



Почитал, да, действительно. А какая допускается вольность в задании атрибутов. Можно писать любые или всетаки общеупотребимые в HTML?
А такая штука прокатит:
Код

= document.createElement("<div zzz='hhh'>Привет мир</div>")
???


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


 




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


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

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