博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
改变div属性的一个实例
阅读量:6093 次
发布时间:2019-06-20

本文共 1906 字,大约阅读时间需要 6 分钟。

<style>

#outer{width:500px;margin:0 auto;padding:0;text-align:center;}
#div1{width: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="width: 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的哪个按钮,都会先重置上一次添加或修改的属性.

 

转载于:https://www.cnblogs.com/julyys/p/4394083.html

你可能感兴趣的文章
vue项目优化--服务端渲染优化
查看>>
OneAPM大讲堂 | 谁更快?JavaScript 框架性能评测
查看>>
深入理解Node中可读流和可写流
查看>>
聊聊spring security的账户锁定
查看>>
new FormData() - FormData对象的作用及用法
查看>>
iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备
查看>>
好文推荐:javascript: 事件委托解析
查看>>
不会接口测试?如何使用eoLinker进行api接口测试
查看>>
通过地图图片生成可交互的地图
查看>>
php+ajax开发手机在线传输文本到电脑
查看>>
基本的隐写术:把任意文件隐藏在一张图片里
查看>>
javascript日期类型(Date)与php日期类型详解
查看>>
记一次vue开发环境搭建
查看>>
使用Jenkins进行持续部署(PHP代码)
查看>>
如何学习服务端开发—以代码工人的视角
查看>>
【219天】黑马程序员27天视频学习笔记【Day22复习脑图】
查看>>
基于 Electron 的爬虫框架 Nightmare
查看>>
弄清Classs,Symbols,Objects拓展 和 Decorators
查看>>
好文章必读 - 收藏集 - 掘金
查看>>
throttle debounce 总结
查看>>