zoukankan      html  css  js  c++  java
  • bgcolor和bgColor?

          那天大众点评在线笔试遇到一道WEB前端题,具体不说明,主要是在用背景色时发现了bgcolor和bgColor的区别。我本是做后台的,正打算入门写前端(之前仅会看),发现这个区别让我对前端工作更加敬畏。

      废话不说,这两个简单说都是设置某些标签背景颜色的,一个是静态(属HTML),一个是动态(属JSript)。区别通过举例使用很容易发现,只是想借区别来谈谈浏览器、兼容性。

      我本来想用bgcolor设置<td>标签的背景色,如下:

      <html><head></head><body>

      <table>

      <tr><td bgcolor="#000"></td></tr></table>

      </body></html>

      这种做法是毫无疑问没什么问题,只是要注意的是,IE浏览器(我用的8,调试的文本模式用默认quirks)下table是自动解析生成了tbody的,因为此IE识别不了无tbody的表格。而我实际是这样写的:

      <html><head></head><body>

      <div id="test"></div>

      <script type="text/javascript">

      var a;

      var nodea, noder, noded, nodeb;

      a = document.getElementById("test");

      nodea = document.createElement("table");

      nodea.setAttribute("border","1");

      nodeb = document.createElement("tbody");  //如果不创建tbody就会出现IE不能识别,后面细说

      nodea.appendChild(nodeb);

      noder = document.createElement("tr");

      noded = document.createElement("td");

      noded.setAttribute("bgcolor","#000");  //这样IE就不会有背景色,正确写法noded.bgColor = "#000";

      noded.innerHTML = "test"

      noded.setAttribute("bordercolor","#000");
          noded.setAttribute("height","40");
          noded.setAttribute("width","40");
          noder.appendChild(noded);
          nodeb.appendChild(noder);
          a.appendChild(nodea);

      </script>  

      </body></html>

      这样写后会出现表格内只有"test"文本,而没有背景颜色(黑色),这是由于bgcolor是设置静态色,但我不是直接写HTML标签来设置,而是用JS脚本动态创建表格然后设置属性,我之前一直没弄懂为什么动态设置bgcolor就不能成功,后来知道了有bgColor,用于动态设置背景颜色,这样才能成功设置背景色(黑色)。

      同样问题,为什么我在静态创建表格是不用写tbody,我的IE浏览器也能识别?而动态因为没有创建tbody就不能识别。这跟浏览器的执行是密切相关的。

        这里我们不太复杂去讨论HTML/JScript/JAVASCRIPT的执行顺序或过程,就bgcolor,它首次被动态设置后,浏览器不解析而言,就知道在我用的IE中,bgcolor一定解析在脚本语言之前,其他属性我不清楚,像这些属性IE8浏览器不会在首次解析后再去解析静态设置,这就说明这类属性的效果,可能跟其他执行有关(渲染?浏览器本身漏洞?),至今还未去深入研究。还请知道的大神能做出解答。

      

  • 相关阅读:
    [YTU]_2911(我想放假)
    [YTU]_2907(类重载实现矩阵加法)
    [YTU]_2617(B C++时间类的运算符重载)
    [YTU]_2633( P3 数钱是件愉快的事)
    [YTU]_2444(C++习题 对象转换)
    [YTU]_2535( C++复数运算符重载(+与<<))
    [YTU]_2354 (实现复数类中的加运算符重载【C++运算符重载】)
    集训总结DAY.1(18.5.22)——KMP
    爬爬爬山
    P3803 【模板】多项式乘法(FFT)
  • 原文地址:https://www.cnblogs.com/iwish/p/3358862.html
Copyright © 2011-2022 走看看