无法设置属性&inner;内部HTML'未定义或空引用。 IE

时间:2014-08-14 22:35:46

标签: javascript internet-explorer

我正在尝试发布表单并在新窗口中打开。适用于Chrome和Firefox,在IE中出现以下错误。

我只在IE中收到以下错误。有人可以帮我找一个解决方案或替代方案。

enter image description here

代码:

function SubmitForm(actionUrl, Nums ) {
 var sHTML = "<form id='form1' action='" + actionUrl + "' method='post' target='MLSmap'>";
    sHTML += "<input name= num type='hidden' value='" + Nums + "' />";   
    sHTML += "</form>";

    var frmTosubmt = window.open(actionUrl, "MLSmap","width:500px; height:700px");
    frmTosubmt.document.body.innerHTML = sHTML ;
    frmTosubmt.form1.submit();
}

3 个答案:

答案 0 :(得分:3)

当您从URL打开一个窗口时,您可能需要提供一点时间让浏览器处理该URL并实际打开文档,然后才能引用其内容。不同的浏览器会以不同的方式处理该时间,也可能取决于内容是否被缓存(您应该使用缓存和非缓存的URL进行测试)。

你可以这样做:

var frmTosubmt = window.open(actionUrl, "NewWindow","width:500px; height:700px");
frmTosubmt.onload = function() {
    frmTosubmt.document.body.innerHTML = sHTML;
    fmrTosubmt.frmMap.submit();
}

但是,如果你要更换整个身体内容,我想知道为什么你很难打开一个URL。为什么不打开一个空白窗口然后填写内容?或者,如果您要做的只是提交表单,为什么不在当前窗口中使用Ajax帖子呢?为什么要打开一个新窗口。

此外,您的屏幕截图显示frmTosubmt.form1.submit(),但这不是HTML中的内容。您的代码显示不同的内容。不确定为什么那些不同?

答案 1 :(得分:0)

尝试jfriend00的建议“打开一个空白窗口,然后填写内容”并且有效。

function (url, params, target) {
     var form = ['<form method="POST" id= "frmpopup" action="', url, '" target="', target, '">'];
        for (var key in params)
            form.push('<input type="hidden" name="', key, '" value="', params[key], '"/>');
        form.push('</form>');
        jQuery(form.join('')).appendTo('body')[0];

        window.open('', target, "width:500px; height:700px; resi");
        $("#frmpopup").submit();
}

答案 2 :(得分:0)

将调用JavaScript文件的脚本块移动到关闭正文标记下方HTML页面的按钮(。

我们收到错误unable to set property 'innerHTML' of undefined or null reference,因为我们正在尝试在加载网页之前执行我们的JavaScript文件。这意味着我们正在尝试写入技术上不存在的页面。