2012-06-21 5 views
2

В функции ниже chld имеет значение null только в IE, в firefox javascript отлично работает.GetElementById Возвращает Null В IE

var div = document.createElement("div"); 

    var divid = "dv" + num; 

    div.setAttribute("ID", divid); 

    div.setAttribute("value", num); 



    var _text = document.createElement("input"); 

    _text.setAttribute("type", "text"); 

    _text.setAttribute("id", "txtAsName" + num); 



    _text.setAttribute("name", "txtAsName" + num); 


    var lbl = document.createElement("label"); 




    var _upload = document.createElement("input"); 

    _upload.setAttribute("type", "file"); 

    _upload.setAttribute("ID", "upload" + num); 



    _upload.setAttribute("name", "uploads" + num); 

    _upload.setAttribute("size", "80"); 



    var hyp = document.createElement("a"); 

    //hyp.setAttribute("style", "cursor:Pointer"); 
    hyp.style.cssText='cursor:Pointer'; 

    //hyp.setAttribute("onclick", "return RemoveDv('" + divid + "');"); 
    hyp.onclick=function() {RemoveDv(divid);}; 

    hyp.innerHTML = "Remove"; 



    var br = document.createElement("br"); 

    var _pdiv = document.getElementById("Parent"); 

    div.appendChild(br); 

    div.appendChild(lbl); 

    div.innerHTML += ' '; 

    div.appendChild(_text); 

    div.innerHTML += ' '; 

    div.appendChild(_upload); 

    div.innerHTML += ' '; 

    div.appendChild(hyp); 

    _pdiv.appendChild(div); 

....

Вот функция удалить

function RemoveDv(obj) { 

     var p = document.getElementById("Parent"); 

     var chld = document.getElementById(obj); 


     p.removeChild(chld); 

    } 

Вот что теги DIV выглядят ложь, что я пытаюсь удалить ..

<div align="left" id="Parent"> 
    <div ID="dv1" value="1"> 
<div ID="dv2" value="2"> 

....

Интересно даже когда я добавить эту строку кода «ради отладки» chld1 еще нулевой

var chld1 = document.getElementById("dv1"); 

UPDATE:

Кажется, что нет ничего плохого в самом коде. Если я запустил тот же код, то есть вне моего локального кода, chld будет установлен. Но если я запустил этот код с нашего сервера dev, т.е. не вижу этот элемент.

Любые идеи, почему это может быть?

+1

Когда вызывается 'RemoveDv'? –

+2

Как вы называете свою функцию? Где элемент «Родитель»? – Pointy

+1

Что такое 'obj'? - –

ответ

2

Это длинный снимок, но попробуйте изменить атрибут идентификатора основного капитала на div для идентификатора нижнего регистра. У меня нет IE и я не могу проверить это прямо сейчас ... извините

1

Если у вас есть несколько элементов с одинаковыми ID в DOM, функция document.getElementById в Internet explorer возвращает null, а в Firefox возвращает первый найденный объект.

пожалуйста, проверьте свой код, чтобы убедиться, что только один элемент с id «Родитель» существует на странице

+0

Существует только 1 «родительский» и 1 «dv1», найденный во всем html –

+0

Кажется, что нет ничего плохого в самом коде. Если я запустил тот же код, то есть вне моего локального кода, chld будет установлен. Но если я запустил этот код с нашего сервера dev, т.е. не вижу этот элемент. Любые идеи, почему это может быть? –

+0

код работает на моей машине IE8 и FF13 –

0

Вы можете просто сохранить ссылку и удалять узлы без их поиска.

Смежные вопросы