• 改变div属性的一个实例


    <style>
    #outer{500px;margin:0 auto;padding:0;text-align:center;}
    #div1{100px;height:100px;background:black;margin:10px auto;display:block;}
    </style>

    <script>
    var changeStyle = function (elem, attr, value)
    {
      elem.style[attr] = value
    };
    window.onload = function ()
    {
      var oBtn = document.getElementsByTagName("input");
      var oDiv = document.getElementById("div1");
      var oAtt = ["width","height","background","display","display"];
      var oVal = ["200px","200px","red","none","block"];

      for (var i = 0; i < oBtn.length; i++)
      {
        oBtn[i].index = i;
        oBtn[i].onclick = function ()
        {
          this.index == oBtn.length - 1 && (oDiv.style.cssText = "");
          changeStyle(oDiv, oAtt[this.index], oVal[this.index])
        }
      }
    };
    </script>

    <div id="outer">
    <input type="button" value="变宽">
    <input type="button" value="变高">
    <input type="button" value="变色">
    <input type="button" value="隐藏">
    <input type="button" value="重置">
    <div id="div1"></div>
    </div>

    上面是一个关于改变div属性的实例,

    1. window.onload函数表示当文档被加载完后才能调用函数,否则不行

    2.   oBtn[i].index = i;
        oBtn[i].onclick = function ()
        {
          this.index == oBtn.length - 1 && (oDiv.style.cssText = "");
          changeStyle(oDiv, oAtt[this.index], oVal[this.index])
        } 

     为什么要执行oBtn[i].index = i;因为onclick函数里有一个闭包,闭包中若用i代替this.index,则i永远只会取得最终值4,并不会达到理想效果,因此需要做一个拷贝.

    3.this.index == oBtn.length - 1 && (oDiv.style.cssText = "");

    这句只有当index为4时执行,表示点击"重置"按钮时,所有属性都被清除.这里的oDiv.style.cssText = ""属性有一个特点.

         当oDiv的样式为行内样式<div id="div1" style=" 200px;"></div>时,oDiv.style.cssText = ""会覆盖了这个行内属性,只取到#div1中的属性;

         当oDiv没有任何行内样式,只有#div1{...}时,oDiv.style.cssText = ""对元素的属性没有任何影响.

    简答地说,即elem.style.cssText这个属性对非行内样式无任何影响,但却会覆盖行内样式.由此也可发现,通过changeStyle函数改变的属性是被动态地添加到行内.

    因此,如果将上述语句修改为:

    this.index == oBtn.length - 1 ;

    oDiv.style.cssText = "";

    很显然,第一句只有在index为4时才取得true,但对其他语句并没有任何影响,而第二句表示不管改变div的哪个按钮,都会先重置上一次添加或修改的属性.

  • 相关阅读:
    iOS:真机调试
    iOS:MBProgressHUD的基本使用
    CocoaPods安装小步骤
    PictureBox 双缓冲防止闪屏
    两招小办法对付宝宝发烧、咳嗽。超级管用哈
    (转)经纬度坐标转换为屏幕坐标
    解决eclipse不识别Android手机的问题
    利用FFmpeg将RTSP转码成RTMP发布在RED5
    vlc做转发的命令
    字符编码
  • 原文地址:https://www.cnblogs.com/julyys/p/4394083.html
Copyright © 2020-2023  润新知