javascript小实例,实现99乘法表及隔行变色
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript小实例,实现99乘法表及隔行变色,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5274字,纯文字阅读大概需要8分钟。
内容图文
![javascript小实例,实现99乘法表及隔行变色](/upload/InfoBanner/zyjiaocheng/1222/1075086cec91405b8265b0b511341c47.jpg)
人生短暂,废话不多说,直奔主题!
这个小实例的要求:
实现在页面中输出99乘法表。(要求:以每三行为一组,实现隔行变色(颜色为白,红,黄(也可自己定义)),鼠标滑过每一行,行背景颜色变为蓝色,鼠标离开又恢复原来的颜色),隔行变色的效果需要用if和switch两种判断方式都能实现;
额,分析一下实例要求:一个99乘法表,一个多方法的隔行变色,鼠标滑过变另外一个颜色,离开恢复原色。 嗯,我们一步步来吧!
99乘法表的实现,我相信很多人都知道怎么实现,无非是2个for循环得到的结果,这里我就不多做解释,还不理解的同学可以仔细研究一下代码,研究一下实现的原理,我在核心代码那里写一点小注释,方便你理解:
1 /* 2 99乘法表的表达式是 i*j 如: 1*2 2*2 3 所以第一个数从0-9,分别乘以0-9,就得到了99乘法表 4 */ 5 // 这里定义是为了记录id的 6 var cur = 0; 7//这里是第一位数 8for(var i=0;i<=9;i++){ 9//这里是第二位数10for(var j=0;j<=i;j++){ 11var sum = i*j; 12//这里创建div13var Div = document.createElement("div"); 14 Div.id = cur ; 15 Div.style.top = i*35 + ‘px‘; 16 Div.style.left = j*105 + ‘px‘; 17 cur++; 18//这里赋值19 Div.innerHTML = j+"*"+i+"="+sum; 20 document.body.appendChild(Div); 21 } 22 }
css样式我就不写了,分到的效果就是这样的:
小学99乘法表,大家都很熟悉,那我们实现第二个功能,隔行变色,要求是用if和switch实现,那我们先用for来实现(这里用的3种颜色是:绿,灰,橙):
var cur = 1; var bg = null; for(var i=0;i<=9;i++){ for(var j=0;j<=i;j++){ var sum = i*j; var Div = document.createElement("div"); var num = "div" + cur; Div.id = num ; Div.style.top = i*35 + ‘px‘; Div.style.left = j*105 + ‘px‘; cur++; Div.innerHTML = j+"*"+i+"="+sum; document.body.appendChild(Div); var oDiv = document.getElementById(num); if(cur%3 == 0){ bg="green"; }else if(cur%3 == 1){ bg="grey"; }else if(cur%3 == 2){ bg="orange"; oDiv.style.backgroundColor= bg; } }
实现效果是这样的:
用switch方法实现:
var cur = 1; var bg = null; for(var i=0;i<=9;i++){ for(var j=0;j<=i;j++){ var sum = i*j; var Div = document.createElement("div"); var num = "div" + cur; Div.id = num ; Div.style.top = i*35 + ‘px‘; Div.style.left = j*105 + ‘px‘; cur++; Div.innerHTML = j+"*"+i+"="+sum; document.body.appendChild(Div); var oDiv = document.getElementById(num); switch(cur%3){ case 0 : bg="green"; break; case 1 : bg="grey"; break; case 2 : bg="orange"; break; } oDiv.style.backgroundColor= bg; } }
实现效果是这样的:
效果好像无差,哈哈,说来实现方法也是挺简单的,现在看看移入表色是怎么做的,以switch判断为例:
1 var cur = 1; 2var bg = null; 3for(var i=0;i<=9;i++){ 4for(var j=0;j<=i;j++){ 5var sum = i*j; 6var Div = document.createElement("div"); 7var num = "div" + cur; 8 Div.id = num ; 9 Div.style.top = i*35 + ‘px‘; 10 Div.style.left = j*105 + ‘px‘; 11 cur++; 12 Div.innerHTML = j+"*"+i+"="+sum; 13 document.body.appendChild(Div); 14var oDiv = document.getElementById(num); 1516switch(cur%3){ 17case 0 : 18 bg="green"; 19break; 20case 1 : 21 bg="grey"; 22break; 23case 2 : 24 bg="orange"; 25break; 26 } 2728 oDiv.style.backgroundColor= bg; 29 } 30 } 31var oDiv = document.getElementsByTagName("div"); 32var len = oDiv.length; 33for(var i=0;i<len;i++){ 34//鼠标移入35 oDiv[i].onmouseover = function(){ 36//第一种写法,可以获取行内样式(用style包起来的),也可以获取样式表中的样式,且值为计算过的37//var defaultBg = getStyle(this,‘background-color‘);38//第二种写法,只能获取style包起来的行内样式,值没有经过计算39var defaultBg = this.style.backgroundColor; //这里是为了存元素刚移入时的背景颜色40this.style.backgroundColor = ‘red‘; 41this.onmouseout = function(){ 42this.style.backgroundColor = defaultBg; 43 } 44 } 45 } 46//这里是获取元素的样式值,兼容性写法47function getStyle(obj,attr){ 48if(obj.currentStyle){ 49return obj.currentStyle[attr]; 50 }else{ 51return getComputedStyle(obj,false)[attr]; 52 } 53 }
得到的效果我就不截图了,自行脑补,或者自己也写一下,到此,所以的要求都写完了!你以为真的到这里就完了吗?按照我一贯的风格,当然没有完,后面还有料!往下看:
你不觉得这个隔行变色有点奇怪吗,确实是隔行变了色,如果是100*100的div,效果杠杠的,但是像99乘法表这样的结果,我只能说呵呵,那能不能让99乘法表实现像100*100的div那样的隔行变色呢?咱们说工匠精神,就是要在乎这些细枝末节,写写看呗!
原理:100*100的div,如果我给每一个编一个号,用横轴和纵轴表示,像这样:
那我们就知道,什么数值对应什么颜色了,转化成99乘法表就是这样:
那,思路就来了,如果我给每个div加一个标记,表示他是第几行的第几列,我就知道他是什么颜色,那代码就如下:
1 var cur = 1; 2var bg = null; 3for(var i=0;i<=9;i++){ 4for(var j=0;j<=i;j++){ 5var sum = i*j; 6var Div = document.createElement("div"); 7var num = "div" + cur; 8 Div.id = num ; 9 Div.style.top = i*35 + ‘px‘; 10 Div.style.left = j*105 + ‘px‘; 11 Div.setAttribute(‘abc‘,i+‘‘+j);//核心代码就是这里啦,给每一个div 自定义一个属性abc,将坐标赋值给它12 cur++; 13 Div.innerHTML = j+"*"+i+"="+sum; 14 document.body.appendChild(Div); 15 } 16 } 1718var oDiv = document.getElementsByTagName("div"); 19for(var i=0;i<oDiv.length;i++){ 20var val = oDiv[i].getAttribute(‘abc‘);//这里获取自定义属性的值21//用这个值来判断什么位置应该是什么颜色22switch(val%3){ 23case 0 : 24 bg="green"; 25break; 26case 1 : 27 bg="grey"; 28break; 29case 2 : 30 bg="orange"; 31break; 32 } 33 oDiv[i].style.backgroundColor= bg; 34 }
得到的效果就是这样的:
效果是不是棒棒哒,比上面的感觉还是舒服许多,所以,记住自定义属性的强大功能,它能做很多棒棒哒事情,有时间,专门讲讲自定义属性的牛X应用,哈哈!
工匠精神,我们再扩展一下,把上面的代码稍微整理一下,做一个简单的小封装,就变成了一个求阶乘的隔行变色的小应用,感觉瞬间变得:就这样 feel 倍爽!
1 function multiTable(m){ 2 var cur = 1; 3var bg = null; 4for(var i=0;i<=m;i++){ 5for(var j=0;j<=i;j++){ 6var sum = i*j; 7var Div = document.createElement("div"); 8var num = "div" + cur; 9 Div.id = num ; 10 Div.style.top = i*35 + ‘px‘; 11 Div.style.left = j*105 + ‘px‘; 12 Div.setAttribute(‘abc‘,i+‘‘+j);//核心代码就是这里啦,给每一个div 自定义一个属性abc,将坐标赋值给它13 cur++; 14 Div.innerHTML = j+"*"+i+"="+sum; 15 document.body.appendChild(Div); 16 } 17 } 1819var oDiv = document.getElementsByTagName("div"); 20for(var i=0;i<oDiv.length;i++){ 21var val = oDiv[i].getAttribute(‘abc‘);//这里获取自定义属性的值22//用这个值来判断什么位置应该是什么颜色23switch(val%3){ 24case 0 : 25 bg="green"; 26break; 27case 1 : 28 bg="grey"; 29break; 30case 2 : 31 bg="orange"; 32break; 33 } 34 oDiv[i].style.backgroundColor= bg; 35 } 36 } 37 multiTable(9);
到此,该效果基本上就讲的差不多了,你以为就这样就完了吗? 咳咳~~,是的,就这么完了,谢谢大家!
行文仓促,有讲的不对的地方,或者是哪里有错误,请不吝赐教,及时指正,不胜感激!
原文:http://www.cnblogs.com/liugang-vip/p/5212037.html
内容总结
以上是互联网集市为您收集整理的javascript小实例,实现99乘法表及隔行变色全部内容,希望文章能够帮你解决javascript小实例,实现99乘法表及隔行变色所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。