Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Динамическое создание елемента из динамически созданного элемента. (https://javascript.ru/forum/dom-window/6708-dinamicheskoe-sozdanie-elementa-iz-dinamicheski-sozdannogo-ehlementa.html)

Anguis 16.12.2009 16:35

Динамическое создание елемента из динамически созданного элемента.
 
Здрасте!
Сразу к делу. Есть функция которая создает элемент -
function show(num){
var el=document.createElement("input");
el.setAttribute("name", "img["+num+"]");
el.setAttribute("type", "file");
el.setAttribute("style", "width:450px");
num++;
el.setAttribute("onClick", "show("+num+")");
fo = document.getElementById("chfiles");
fo.appendChild(el);
fo.appendChild(document.createElement("br"));
}

Т.е. она создает элемент input при изменении которого опять-же должна вызываться эта-же функция, которая создаст еще один элемент.
Работает везде кроме ИЕ.
ЧЯДНТ?

Kolyaj 16.12.2009 16:42

el.onclick = function() {
    show(num + 1);
}

Строчку num++ удалить.

Anguis 16.12.2009 16:52

Цитата:

Сообщение от Kolyaj (Сообщение 38143)
el.onclick = function() {
    show(num + 1);
}

Строчку num++ удалить.

Не работает
При том перестало работать и в опере и мазилле

Kolyaj 16.12.2009 16:57

Работает.

Anguis 16.12.2009 17:06

Цитата:

Сообщение от Kolyaj (Сообщение 38148)
Работает.

Не, я чё, прикалываться буду?

Привожу скрипт целиком.
function show(num){
var el=document.createElement("input");
var desk=document.createElement("input");
var lab = document.createElement("lable");
el.setAttribute("name", "img["+num+"]");
el.setAttribute("type", "file");
el.setAttribute("style", "width:450px");
desk.setAttribute("name", "desk["+num+"]");
desk.setAttribute("type", "text");
desk.setAttribute("style", "width:450px");
desk.setAttribute("value", "Подпись");
desk.onFocus = function() {if(this.value=='Подпись'){this.value=''}};
lab.setAttribute("for", "photo["+num+"]");
el.onClick = function() {
    show(num+1);
}
lab.innerHTML = "Фото"+(num+1);
fo = document.getElementById("chfiles");
fo.appendChild(lab);
fo.appendChild(el);
fo.appendChild(document.createElement("br"));
fo.appendChild(desk);
fo.appendChild(document.createElement("br"));
fo.appendChild(document.createElement("br"));
}


Он не работает ни в одном из браузеров!!
При том не работает ни строка desk.onFocus = function() {if(this.value=='Подпись'){this.value=''}}; ни строка el.onClick = function() {
show(num+1);
}

А если делать el.setAttribute("onFocus", "if(this.value=='Подпись'){this.value=''}") ; то это работает везде кроме ИЕ

e1f 16.12.2009 17:08

А если не onClick, а onсlick?

Anguis 16.12.2009 17:17

Цитата:

Сообщение от e1f (Сообщение 38152)
А если не onClick, а onсlick?

Херассе! Явсакрипт жешь регистрозависимый язык.... Я и не знал что есть onClick и onclick и это разные вещи
Спасибо, заработало!

Kolyaj 16.12.2009 17:21

Напишешь им, только чтоб скопировали, все равно что-нить поменяют.

Anguis 16.12.2009 17:23

Цитата:

Сообщение от Kolyaj (Сообщение 38158)
Напишешь им, только чтоб скопировали, все равно что-нить поменяют.

Вот не надо. Новички в яваскрипте многого не знают, и надо объяснять. Я вот до этого и не представлял что такая разница есть и думал что делаю верное исправление, так как знаю что язык регистрозависимый.

Kolyaj 16.12.2009 17:24

Исправления надо делать после первого запуска, а не до. Чтобы знать кто именно накосячил. Особенно, если "многого не знают, и надо объяснять".

З.Ы. Это так, совет. Без наездов :)


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