这个问题我从来没有遇到过,所以感觉很新鲜。
希望遇到这个问题的朋友看到后能够有恍然大悟的感觉。当然事实上很多情况是,不会有人在头部加注释。。
原文:http://blog.linym.net/archives/474(全部翻译成简体了。。原文是繁体)
前几天学弟问我一个问题,说他CSS排版的网页在大部分浏览器都正常,唯独IE怪怪的,网页中的DIV元素怎么样都无法居中,困扰了他许久,他的原始代码内容大致如下:
<!-- Head area -->
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test Page</title>
<style type="text/css">
<!--
#content {
margin: 0 auto;
width: 500px;
}
-->
</style>
</head>
<body>
<!-- Content Begin -->
<div id="content">Content</div>
<!-- Content End -->
</body>
</html>
嗯。看起来不应该会有什么问题,那是什么原因让IE无法将DIV居中呢?突然注意到他网页头问那一行注释,因为自己写网页到现在从未在头部使用过注释
果然,拿掉以后就一切正常了。IE,还真是搞不懂你啊!
(注:全系列 IE 都有此现象)
这个实现方式有点妖。
原文是用asp.net实现的。我也没有改,因为,json数据的获取在PHP中真是太简单了。拿到数据后json_encode一下就全有了。。
想看的就做个参考吧。我还是觉得妖
这里只是把主要的代码贴出来,不再进行过多的说明,重要的地方以注释的方式进行说明。
XML/HTML代码
- <div id="pubDiv" style="background-position: #9999FF; font-size:12px; display:none; z-index:0; overflow:auto; position:absolute; border:#EDEDED 0px solid;background:#EDEDED;"></div>
- <script type="text/javascript" language="javascript">
- // 注意下面的等号右面,不能是“<%=BuildJson() %>”,因为JSon整体不能是字符串,同时最后也不能加分号:“;”
- var strJson = <%=BuildJson() %>
-
- function ShowBdzDiv() {
- var dept = document.getElementById("<%=ddlDeptEdit.ClientID %>").value;
- // 构建要下拉选择的内容
- var strHtml = "<table border=0px cellpadding=0 cellspacing=0 width=120px><tr>";
- for (var key in strJson[dept]) {
- strHtml += "<tr><td onclick=SetBdz()>" + key + "</td></tr>";
- }
- strHtml += "</table>";
- var oBdz = document.getElementById("<%=txtBdz.ClientID %>");
- var oDiv = document.getElementById("pubDiv");
- oDiv.innerHTML = strHtml;
-
- // 设置显示的位置,并显示
- oDiv.style.top = "99px";
- oDiv.style.left = "100px";
- oDiv.style.display = "block";
-
- }
- // 当点击选择一个内容时
- function SetBdz() {
- var oBdz = document.getElementById("<%=txtBdz.ClientID %>");
- // 把选择内容设置到TextBox上,并隐藏下拉选择项
- oBdz.value = event.srcElement.innerText;
- HiddenDiv();
- }
- // 隐藏下拉选择项
- function HiddenDiv() {
- var oDiv = document.getElementById("pubDiv");
- oDiv.style.display = "none";
- }
- </script>
- 。。。
-
- <asp:TextBox ID="txtBdz" AutoCompleteType="Disabled" onfocus="ShowBdzDiv()" runat="server"></asp:TextBox>
这里要说明的是,这里只实现了下拉选择项的点击选择,不能使用键盘操作。