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