我在IE下也遇到过这个问题。我有两个 div,用来将选定的元素从一个元素拖动到另一个元素。假设我在 div1 中有一个子元素(也是一个 div),在 div2 中有一些子元素。我在 div1 的子元素上调用 div2.appendChild() 方法。它将子项从 div1 中删除并将其附加到 div2 中。如果我随后尝试将子项追加回 div1,我会在 IE 中收到以下异常“意外调用方法或属性访问”。它在 Firefox 中完美运行。请参阅下面的 JavaScript 代码片段。
function moveSelectedGroupBoxItems(toLocation, grp){
document.body.className = 'groupBoxDefaultCursor';
if(groupBoxfromLocation != toLocation){
if(grp == groupBoxGroup){
var fromVal = document.getElementById(groupBoxfromLocation);
var toVal = document.getElementById(toLocation);
var children = fromVal.childNodes;
for (var i = children.length - 1; i >= 0; i--) {
if(children[i].className == 'groupBoxItemSelected'){
children[i].childNodes[0].name=toLocation;
toVal.appendChild(children[i]);
}
}
}
}
groupBoxfromLocation = '';
groupBoxGroup = '';
return false;
}
这基本上会在拖动时将选定的子 div 从一个父 div 移动到另一个父 div。
对于搜索结果的好处 - 当将子节点附加到命名空间元素时,我在 IE 6 和 7 中遇到了同样的错误“意外调用方法或属性访问”,但命名空间尚未声明。
var a=document.createElement("foo:blah");
var b=document.createElement("div");
a.appendChild(b); //Fails
为了解决这个问题,我必须将命名空间声明添加到 HTML 代码中:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foo>
或者通过 javascript 动态地(可能应该包含在 try/catch 中):
var namespaces = document.namespaces;
if(namespaces) {
namespaces.add("foo", null, null);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)