Js进阶知识(三)
来源:互联网 发布:windows xp好还是7好 编辑:程序博客网 时间:2024/05/17 06:10
1)用JS来实现一个比较简单的jquery效果,具体代码如下:
window.onload = function () { var J = function (element) { return { ele: document.getElementsByTagName(element), css: function (attr, val) { for (var item in this.ele) { this.ele[item].style[attr] = val; } } } }; J("span").css("border", "1px dotted red"); }
有几点问题需要注意一下,就是document.getTagName获取的结果是数组,所以我们下面要用for循环来取值;for (var item in this.ele)中的item是索引值,而不是像C#的foreach那样;this关键字,要记住了在对象内部,访问对象里面的其它key的时候要加上this关键字(注:这里的return 后面大括号是一个对象而不是J)
2)对于上面的方法改进,可以连续的写css,eg:
var J = function (element) { return { ele: document.getElementsByTagName(element), css: function (attr, val) { for (var a = 0; a < this.ele.length; a++) { this.ele[a].style[attr] = val; } return this;//这里的this是当前的对象,即现在的return回来的这个对象 //所以我们可以连续的点击css,就跟我们调用属性是一样的,直接就可以点 //出来。 } }};J("span").css("border", "1px dotted red").css("color", "red");
3)动态实现加载另外一个css文件的效果,我们可以把link元素添加一个id,或者直接选取link元素,然后把其中的路径用jquery的attr给替换一下就可以了。
4)获取浏览器可用区域代码:
var width = document.documentElement.clientWidth;var height = document.documentElement.clientHeight;
5)js获取某一个元素的宽度
document.getElementById(“father”).offsetWidth+”px”;
高度
document.getElementById(“father”).offsetHeight +”px”;
获取完了之后假如需要操作的话,一定要在后面添加上px,貌似火狐浏览器不支持没有单位的数值。
6)清空select,document.getElementById(“jj”).length=0;
7)让一个div居中的js代码。
document.getElementById("father").style.top=document.body.clientHeight/2;document.getElementById("father").style.left=document.body.clientWidth/2;document.getElementById("father").style.marginLeft=-(document.getElementById("father").offsetWidth/2);document.getElementById("father").style.marginTop=-(document.getElementById("father").offsetHeight/4);//这里之所以用4是因为father中有两个元素,只不过是一个可见一个不可以见,所以要除以4;正常的是除以2;
8)我们通常在使用ajax的时候,会动态的在后台取值,然后放到前台去,并且可能为其添加上动作,通常我们都会使用如下代码:
$("#checkoutHolder").append("<button id='wenbin'>Hi</button>"); $("#wenbin").on("click", function () { console.log("以前用的方法!"); });
现在还有一种写法,具体如下:
jq再给新建元素绑定事件的时候可以不给元素起一个名字,直接使用$(元素内容)也可以。
var btn = $("<button>Hi</button>");//虽然此处可以这样写,但是它并不是一种选择器,如果我们写成这样$("#checkoutHolder").click(function(){});就会出错。btn.on('click', function (evt) { console.log("新方法"); });$("#checkoutHolder").append(btn);
9)以后bind live on统一使用on来进行事件的绑定,因为on性能好一些,而且不易出错。
10)判断一个元素是否存在,js写法如下:
js判断一个元素是否存在直接使用use code like thisif (document.getElementById("wenbin")) {alert('存在');} else {alert('不存在');}
如果是jquery判断的话 需要使用元素选择器.length>0,如果大于0 则表示元素存在,否则不存在。
- Js进阶知识(三)
- js进阶知识 (二)
- Js进阶知识(一)
- Js进阶知识(二)
- js 进阶知识
- 8.7 js进阶学习三
- JS的进阶上山打怪咯之数组(三)
- iOS 进阶知识(框架)
- JS学习之三(JavaScript组成部分【知识补充】)
- javascript进阶(三)
- RequireJS进阶(三)
- Python进阶(三)
- (三)Mybatis进阶
- RequireJS进阶(三)
- Spark进阶(三)
- Dagger2 进阶 (三)
- Javascript进阶(三)
- LED知识(三)
- 用secureCRT ssh登陆不显示用户名和路径解决方案
- Git笔记
- FUN_SYS_GET_CALENDAR_WEEK(3)
- Cocos2d-x 3.2中的三种缓存类
- 汽车导航中,导航引擎与导航地图的关系
- Js进阶知识(三)
- android jni 调用 libcurl
- Beautiful Soup(二)--遍历文档树
- PHP 常用的header头部定义
- (NoSql之HBase)Hbase原理、基本概念、基本架构
- Timer和TimerTask详解
- org.apache.jasper.JasperException: Unable to compile class for JSP:
- 第二周 项目一:三角形类1
- Linux - 文件 /dev/null 和 /dev/zero