在下面的函数中,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得到设置。但是,如果我从我们的开发服务器上运行此代码,即没有看到该元素。
为什么会出现这种情况?
答案 0 :(得分:2)
这是一个很长的镜头,但尝试将div上的大写案例ID属性更改为小写ID。我没有IE,现在无法自己测试...抱歉
答案 1 :(得分:1)
如果DOM中有多个元素具有相同的ID
,则Internet Explorer中的document.getElementById
函数将返回null,而在Firefox中,它将返回第一个找到的对象。
请检查您的代码,以确保页面上只有id
“父”的一个元素
答案 2 :(得分:0)
您可以简单地保存引用并删除节点而不进行搜索。