学习javascript好多同窗不知道怎么上手,跟着网上的新手教程作了一遍又以为javascript很简单,可是真正本身用起来又以为写不出什么东西,我以为学习最好的方法就是跟着有趣的例子作,因此咱们的口号是“天天一例,轻松javascript”javascript
今天给你们带来第一个例子,简单Dom操做,效果先看下图css
html代码html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>DIV设置样式</title> <script src="setDiv.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" type="text/css" href="setDiv.css"/> </head> <body> <div id="mainbox"> <p>请为下面的DIV设置样式:</p> <input type="button" name="" id="setButton" value="设置" /> <div id="setBox"></div> </div> <div id="shadow"></div> <div id="jumpDiv"> <div class="controlBox"> <p>请选择背景颜色</p> <ul> <li style="background: red; color: #fff;">红</li> <li style="background: yellow; color: #fff;">黄</li> <li style="background: blue; color: #fff;">蓝</li> </ul> </div> <div class="controlBox"> <p>请选择宽度</p> <ul> <li>200</li> <li>300</li> <li>400</li> </ul> </div> <div class="controlBox"> <p>请选择高度</p> <ul> <li>400</li> <li>500</li> <li>600</li> </ul> </div> <div id="controlButton"> <input type="button" name="" id="reset" value="恢复" /> <input type="button" name="" id="ok" value="肯定" /> </div> </div> </body> </html>
css代码java
ul li { display: inline; list-style-type: none; } p { float: left; } #mainbox { width: 740px; height: 420px; background: #ccc; float: left; padding: 10px; } #mainbox p { font-size: 20px; font-weight: bold; margin: 0; line-height: 38px; } #mainbox input { border: none; background: #ff0000; color: #fff; width: 100px; height: 40px; font-weight: bold; cursor: pointer; } #setBox { width: 100px; height: 100px; border: 2px solid #000; margin: 20px 0; background: #fff; } #shadow { width: 100%; height: 100%; background: #000; position: absolute; opacity: 0.6; z-index: 9; display: none; } #jumpDiv { width: 270px; height: 170px; background: #fff; border: 10px solid #999; position: absolute; padding: 20px 0 0 30px; display: none; z-index: 99; left: 50%; top:15%; margin: 0 auto; } .controlBox { width: 100%; float: left; } .controlBox p { width: 120px; margin: 0; padding: 6px 0 0 0; } #jumpDiv ul { width: 140px; float: left; padding: 0; margin: 0; } #jumpDiv ul li { width: 30px; height: 30px; border: 1px solid #999; font-size: 10px; float: left; margin: 5px; background: #ddd;; line-height: 30px; text-align: center; cursor: pointer; display: block; } #controlButton { text-align: center; padding: 5px 0 0 0; width: 100%; height: 30px; float: left; } #controlButton input { width: 60px; height: 30px; background: #000080; text-align: center; color: #fff; line-height: 30px; border: 1px solid #ccc; cursor: pointer; }
javascript代码函数
window.onload = function () { function luka(element) { //if (/#/.test(element) == true) 正则也能够匹配,不过正则的效率没有函数高,貌似任何语言都是 if (element.indexOf('#') > -1) { return document.getElementById(element.replace(/#/,'')); }; if (element.indexOf('.') > -1) { return document.getElementsByClassName(element.replace(/\./g,'')); }; if (/^[a-zA-Z]+&/.element = true) { return document.getElementsByTagName(element); }; console.log(element); }; //下面主要是为了偷懒写的循环,否则一个个li去学控制很烦,并且这样能让html看着很清爽,记住写代码就是要怎么偷懒怎么写,这里的偷懒是复用的意思,用最少的功能实现最优的功能 function liClick() { var obj = luka("li"); //console.log(obj.length); for (var i = 0; i < obj.length; i++) { obj[i].index = i; obj[i].onclick = function() { var numClick = this.index; if (0 <= numClick <= 2) { luka("#setBox").style.backgroundColor = luka("li")[numClick].style.backgroundColor; }; if (3 <= numClick <= 5) { luka("#setBox").style.width = luka("li")[numClick].innerHTML+"px"; }; if (6 <= numClick <= 8) { //等效 numClick == 6 || numClick == 7 || numClick == 8 luka("#setBox").style.height = luka("li")[numClick].innerHTML+"px"; }; }; }; }; function shadow() { luka("#shadow").style.display = "none"; luka("#jumpDiv").style.display = "none"; }; luka("#setButton").onclick = function() { luka("#shadow").style.display = "block"; luka("#jumpDiv").style.display = "block"; }; luka("#reset").onclick = function() { luka("#setBox").style.width = "100px"; luka("#setBox").style.height = "100px"; luka("#setBox").style.backgroundColor = "#fff"; }; luka("#ok").onclick = shadow; luka("#shadow").onclick = shadow; //点击阴影关闭遮罩和弹出的控制框 luka("#jumpDiv").onmouseover = liClick; //绑定事件响应的层 }
知识点学习
document.getElementById or getElementsByClassName or getElementsByTagName 这类操做咱们常常要用,反复打,又麻烦,效率又低,因此咱们封装一个库,方便以后调用,我写的这个:优化
- luka("#id")这种方式就能够调用getElementById
- luka(".id")调用getElementsByClassName
- luka("element")调用getElementsByTagName
- PS:为何叫luka是由于我喜欢,我爱
- 不知道你们是否是和我同样,刚开始以为遮罩很神奇,其实真作了就很简单,遮罩就是加了一个div的半透明层,操做一下控制这个层的display属性就能够简单的实现了
思考:this
- 弹出的层怎么能用鼠标拖动呢?若是你有兴趣,实现了回复我吧
- 最后求大神指教,求大神优化代码