整个html文件如下所示,放在iis目录下,用
http://localhost/H1.htm
和
http://192.168.12.60/H1.htm
得到的结果竟然不同,localhost能新增一行记录,而用ip的就不能新增
想请教大侠,为什么localhost与ip访问,js的执行情况会不同呢?另外,除去js问题,2个页面显示的样式也不同,比如table的位置明显不同,这又是为什么呢?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script type="text/javascript">
function addrow() {
var tb = document.getElementById("tb1");
var tr = AddTR(tb); //.insertRow(); var td = AddTD(tr);
td.innerHTML = "addrow1"; td = AddTD(tr);
td.innerHTML = "addrow2";
}
function AddTR(tb) {
if (tb.tagName && tb.tagName == 'TABLE') {
// var tr = tb.insertRow();
//var tbody = tb.childNodes[0];
var tbody = null;
for (var i = 0; i < tb.childNodes.length; i++) {
if (tb.childNodes[i].tagName == 'TBODY') {
tbody = tb.childNodes[i];
break;
}
}
//if (tbody == null)
// return null;
var tr = document.createElement('TR');
//tbody.appendChild(tr); // 用这一句没有问题,但是因为代码被我注释了,忘记了以前是不是因为这句代码出过问题
tb.appendChild(tr); // 问题就出在这一句
//tbody.insertAdjacentElement('beforeEnd', tr);
return tr;
}
return null;
} function AddTD(tr) {
if (tr.tagName && tr.tagName == 'TR') {
// var td = tr.insertCell();
var td = document.createElement('TD');
tr.appendChild(td);
return td;
}
return null;
} </script>
</head>
<body onload="addrow();">
<table id="tb1" border="1" cellpadding="0" cellspacing="0">
<tr>
<th>标题1</th>
<th>标题2</th>
</tr>
</table>
</body>
</html>
http://localhost/H1.htm
和
http://192.168.12.60/H1.htm
得到的结果竟然不同,localhost能新增一行记录,而用ip的就不能新增
想请教大侠,为什么localhost与ip访问,js的执行情况会不同呢?另外,除去js问题,2个页面显示的样式也不同,比如table的位置明显不同,这又是为什么呢?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script type="text/javascript">
function addrow() {
var tb = document.getElementById("tb1");
var tr = AddTR(tb); //.insertRow(); var td = AddTD(tr);
td.innerHTML = "addrow1"; td = AddTD(tr);
td.innerHTML = "addrow2";
}
function AddTR(tb) {
if (tb.tagName && tb.tagName == 'TABLE') {
// var tr = tb.insertRow();
//var tbody = tb.childNodes[0];
var tbody = null;
for (var i = 0; i < tb.childNodes.length; i++) {
if (tb.childNodes[i].tagName == 'TBODY') {
tbody = tb.childNodes[i];
break;
}
}
//if (tbody == null)
// return null;
var tr = document.createElement('TR');
//tbody.appendChild(tr); // 用这一句没有问题,但是因为代码被我注释了,忘记了以前是不是因为这句代码出过问题
tb.appendChild(tr); // 问题就出在这一句
//tbody.insertAdjacentElement('beforeEnd', tr);
return tr;
}
return null;
} function AddTD(tr) {
if (tr.tagName && tr.tagName == 'TR') {
// var td = tr.insertCell();
var td = document.createElement('TD');
tr.appendChild(td);
return td;
}
return null;
} </script>
</head>
<body onload="addrow();">
<table id="tb1" border="1" cellpadding="0" cellspacing="0">
<tr>
<th>标题1</th>
<th>标题2</th>
</tr>
</table>
</body>
</html>
我甚至在另外2台机器上测试,也都是用本地IP注:IE8,Windows2003
如果是同样环境,你可以放在iis下测试一下
在另外一台IE8下再次测试,还是出现同样问题。注:hosts文件绝对没有问题(俺也当过网管,所以请大家排除网络之类情况)还有就是上周IE6、7都正常,能新增行,不知道是不是上周微软出的那些补丁造成的呢?
IE8有个功能。可以选择按照IE7或IE8不同的版本来访问页面的。
IE7与IE8打开同一页面,显示会有点差异。
var tb = document.getElementById("tb1");
var tr = AddTR(tb); //.insertRow(); var td = AddTD(tr);
td.innerHTML = "addrow1"; td = AddTD(tr);
td.innerHTML = "addrow2";
tb.outerHTML = tb.outerHTML
}
tb.appendChild(tr);
删除,改回:
tbody.appendChild(tr);那个样式变化的问题,就是因为IE8的兼容性视图造成了。
默认情况下,localhost不用兼容性视图
而Intranet站点使用了兼容性视图,造成样式显示不同,JS的解析也不太一样了。