Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet Explorer中Javascript生成的html代码出现问题_Javascript_Html_Internet Explorer - Fatal编程技术网

Internet Explorer中Javascript生成的html代码出现问题

Internet Explorer中Javascript生成的html代码出现问题,javascript,html,internet-explorer,Javascript,Html,Internet Explorer,我有一个带有表单的html页面。在这个表单中,我有一个可供用户使用的输入字段,其类型设置为file。表格通常是隐藏的 当用户按下一个按钮,调用jQuery.dialog()函数时,表单就会出现。“获取”对话框创建得很好,但从未显示输入字段。我不能确定它到底是显示出来了,还是只是放在屏幕外面了 javascript自动生成的get表也会发生同样的情况。该表由几个输入元素(尽管类型不同)和每行一个select元素组成。现在select元素显示正确,而所有输入元素显示不正确 这是Internet Ex

我有一个带有表单的html页面。在这个表单中,我有一个可供用户使用的输入字段,其类型设置为
file
。表格通常是隐藏的

当用户按下一个按钮,调用
jQuery.dialog()
函数时,表单就会出现。“获取”对话框创建得很好,但从未显示输入字段。我不能确定它到底是显示出来了,还是只是放在屏幕外面了

javascript自动生成的get表也会发生同样的情况。该表由几个输入元素(尽管类型不同)和每行一个select元素组成。现在select元素显示正确,而所有输入元素显示不正确

这是Internet Explorer的问题吗?因为所有其他(主要)浏览器都能很好地显示它。对于主流浏览器,我指的是Chrome、FF、Safari和Opera


编辑>源

页面中的表单:

<form title="Upload snapshot" class="hidden" enctype="multipart/form-data" id="fileUpload" name="fileUpload">
    <input type="hidden" name="command" value="load" />
    <input type="hidden" name="table" id="formTable" />
    <input type="file" id="uploadedFile" name="uploadedFile" />
</form>
由于表的复杂性,生成表需要相当多的代码。基本上,JSGET的json格式的条目集合。对该集合进行解码,并为每种类型的列创建一个适当的单元格,并将其添加到页面的文档中。这一切的核心是:

var tbodyNew =  document.createElement('tbody');
$(data.Data).each(function(value) {
    row=this;
    var trRowNew =  document.createElement('tr');
    $(trRowNew).attr('id', row['id']);
    var tdNew = document.createElement('td');
    var rowSelect = document.createElement('input');
    $(rowSelect).attr('type', 'checkbox');
    $(rowSelect).addClass('row-selector');
    $(rowSelect).addClass('hidden');
    $(tdNew).append(rowSelect);
    $(trRowNew).append(tdNew);
    for (var columnId in Columns) {
        tdNew = document.createElement('td');
        if (Columns[columnId].Name == 'id') {
            $(tdNew).addClass('hidden');
        }
        $(tdNew).attr('id', Columns[columnId].Name);
        $(tdNew).append(AddCell(columnId, row));
        $(trRowNew).append(tdNew);
    }
    $(tbodyNew).append(trRowNew);
});
$(tableNew).append(tbodyNew);
$(form).html('');
$(form).append(tableNew);
AddCell()
方法确定应使用的输入类型(复选框、文本等)


编辑2>额外图像

为了进一步解释正在发生的事情:

这些图像显示了表格在背景中呈现的差异,以及对话框在前景中的显示方式


编辑3>DOM检查

我检查了InternetExplorer中的DOM结构,我看到元素被放在页面中。。。它们只是没有被渲染。看起来他们没有合适的高度和宽度。虽然检查了它们的样式,但显示这些属性设置为“自动”:


为了解决这个问题,我发现当一个输入的display属性设置为table row时,Internet Explorer会阻塞它。移除所述属性将解决该问题。然而,根据文档,这似乎是我们想要的功能。尽管奇怪的是,其他浏览器没有遵循文档的要求……

请发布您的HTML和JS代码,让我们看看。无法以当前形式回答您的问题。请检查您的html和JS代码后,Firefox将无法识别某些错误。但IE将识别并停止加载剩余的脚本。某些html和JS代码可能有问题。是否有任何工具可用于此操作?
var tbodyNew =  document.createElement('tbody');
$(data.Data).each(function(value) {
    row=this;
    var trRowNew =  document.createElement('tr');
    $(trRowNew).attr('id', row['id']);
    var tdNew = document.createElement('td');
    var rowSelect = document.createElement('input');
    $(rowSelect).attr('type', 'checkbox');
    $(rowSelect).addClass('row-selector');
    $(rowSelect).addClass('hidden');
    $(tdNew).append(rowSelect);
    $(trRowNew).append(tdNew);
    for (var columnId in Columns) {
        tdNew = document.createElement('td');
        if (Columns[columnId].Name == 'id') {
            $(tdNew).addClass('hidden');
        }
        $(tdNew).attr('id', Columns[columnId].Name);
        $(tdNew).append(AddCell(columnId, row));
        $(trRowNew).append(tdNew);
    }
    $(tbodyNew).append(trRowNew);
});
$(tableNew).append(tbodyNew);
$(form).html('');
$(form).append(tableNew);