GetElementById在IE中返回Null

时间:2012-06-21 14:18:39

标签: javascript

在下面的函数中,chld仅在IE中为null,在firefox中javascript工作正常。

    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");

更新:

似乎代码本身没有任何问题。如果我运行相同的代码,即关闭我的本地代码chld得到设置。但是,如果我从我们的开发服务器上运行此代码,即没有看到该元素。

为什么会出现这种情况?

3 个答案:

答案 0 :(得分:2)

这是一个很长的镜头,但尝试将div上的大写案例ID属性更改为小写ID。我没有IE,现在无法自己测试...抱歉

答案 1 :(得分:1)

如果DOM中有多个元素具有相同的ID,则Internet Explorer中的document.getElementById函数将返回null,而在Firefox中,它将返回第一个找到的对象。

请检查您的代码,以确保页面上只有id“父”的一个元素

答案 2 :(得分:0)

您可以简单地保存引用并删除节点而不进行搜索。