【问题标题】:Internet explorer Dom elements getElementByIdInternet Explorer Dom 元素 getElementById
【发布时间】:2011-11-11 23:34:15
【问题描述】:

在 Internet Explorer 8 下,当我尝试将 Div 从窗口复制到弹出窗口时,getElementById 方法不会返回 DOM 元素,而是返回普通元素。我不能在这类项目上调用 appendChild,因为我收到“非法参数”错误。将 div 从父窗口复制到子弹出窗口的解决方案是什么。

到目前为止,我编写的代码在 Chrome 和 Firefox 上都能完美运行,但在 IE 上却不行。

此代码在弹出窗口中:

在加载弹出窗口时调用它

<body onload="initialize();">

     <div id='sourceDiv'></div>

</body>

function initialize(){
    var source = window.opener.document; 
    var myDiv = source.getElementById("myDiv"); 
    var destination = document.getElementById("sourceDiv");
    destination.appendChild(myDiv); 
}

以下sn-p来自父窗口

<div id='myDiv>
...
</div> 

【问题讨论】:

    标签: html internet-explorer-8 appendchild


    【解决方案1】:

    为什么不在 jQuery 中执行此操作? jQuery 被设计为独立于浏览器。

    jQuery 代码将是这样的一行:

    $('#sourceDiv').append($('#myDiv').html());
    

    好的,我刚刚尝试了一个测试项目,这段代码有效:

    <script language="javascript">
    
        $(document).ready(function() {
            $('#sourceDiv').append($('#myDiv').html());
        });
    </script>
    
    
    <body>
        <div id='sourceDiv'></div>
        <div id="myDiv">myDiv text</div>
    </body>
    

    您需要确保在调用函数时加载了文档。

    【讨论】:

    • 我已经用 jQuery 试过了,但我遇到了同样的问题。异常来自 jQuery 库的这个地方,它尝试在我的 Div 上调用 appendChild。
    • 你在 jQuery 中使用了哪些代码?我发布的代码?你能提供你的html的sn-p吗?
    • 目前我正在使用我在问题中发布的代码。我已经尝试过您发布的行和没有“.html()”的行 - 即:$('#sourceDiv').append($('#myDiv')。问题是 sourceDiv 没有 javascript 方法appendChild; jQuery 在其实现中使用 appendChild 将我的对象附加到父 DOM 元素。
    • 我不明白 div 标签如何没有 appendChild 方法。你能提供包含你的源 div 的 html 的 sn-p 吗?
    • 该代码的唯一问题是您的修改是我试图附加的 div 来自 window.opener.document,即来自我打开弹出窗口的窗口,而不是来自当前窗口。这很好用,但在我的情况下却不行。
    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多