《俗人笔记》之《js与jq个人实用小结》

js

核心 ecma script:js的基础语法 bom:对浏览器对象操作 dom:对网页属性操作
期望 实现动态效果和用户交互功能

五种最基本类型:number string null boolean undefined(都是用var来接收,这也是js的弱语言性)

问题: 在根据typeof判断类型或者if判空时,null与undefined有什么区别吗?
方案:当然,null是object类型,其实是占着字节符的,而undefined是根本没有定义

问题: js判空,if(属性),当属性为空时,才为true,与StringUtils的Isnotblank相反

函数方法:命名方法   匿名方法
    注意:js方法不可以重载,只可以覆盖,还有就是方法参数不一定传全,可以传部分,按参数顺序获取值

命名方法:function add(val){}
调用:标签内直接调用 <input onclik="add(val)"/> a标签也行 <a href="javascript:;" onclick=""/>

匿名方法:document.getElementById().onclick=function(){} 在js内获得标签,在对应给方法

拓展
onblur 失焦事件 onfocus获得焦点事件 onclick点击事件 ondbclick双击事件 onmouseover鼠标悬浮事件
onmouseout鼠标移开事件 onsubmit提交事件 onchange改变内容事件 onkeyup键盘松开事件 onload页面加载

核心内置对象
js对象本质就是数组对象,jq转js时就是按照数组转的,其内置对象就是数组,它与java的大不相同,数组长度动态变化,数据类型可以不一样,有大量方法
方法:concat连接数组 reverse 数组反转 join将数组拼成字符串 sort对数组排序,可以自定义sort(function(m,n)),m-n>0正序
注意:如果js根据类名或标签名获得数据,那这些数据就可以是一个数组

日期对象:new date().toLocalString() 不常用,可以了解下

全局对象:顾名思义,在js范围内都可以用
parseInt 将字符串转成数字,注意:如果含有非数字字符串,已发现就停止转换 parseFloat原理一样
isNaN判断数字类型,如果不是数字才为true
encodeUrl把字符串进行url编码 decodeUrl按url解码,这还是有用的,一般用于网页地址传值时在截取值出现乱码问题

**核心

Bom

三天王:window history location
window:alert(提示) confirm(确定) setInterval(方法名,时间)设置循环事件  setTimeout(方法名,时间)设置延迟事件,只执行依次 clearInterval clearTimeout
//1000毫秒调用begin()
timer = window.setInterval(begin, 1000);

location: href=地址,不但可以获取当前地址,还可以跳向指定地址 reload()刷新页面

history:forword()前进 back()返回 go(-1)返回 go(1)前进 go(0)不动

Dom

ducument.getElementByid byName byTagName byClassName 其实都返回的是数组,只不过id返回的是数组第一个数而已

.innerHtml="“操作是往标签内填数据,jq则是用的.html(),纯文本就是.innerText,jq对应.txt(),获得对象值用.value就行,赋值时也可以.value=”"就行,src同理

js操作css,一般是对象.style.属性,和jq的对象.css(“属性”,“值”)一样,当然,也可以再获得对象后直接.classname=""来操作

jq

页面加载,$(function(){})一般对匿名函数要使用,因为要先获取对应id,与$(ducment).ready(function)效果一样
常用选择器:
$("#id") $("标签") $(".class") $(父标签 子标签)$("标签[属性='值']") $("div[id][title='test']").css("background‐color","red");
还有一些混合使用的基本选择器:even :odd  :eq(标签按索引) $("div:eq(3)").css("background‐color","red");
还用状态的 :checked :selected 		var $checkedInput = $("input[type='checkbox']:checked");

注意 checkbox对应checked select对应selected
还有就是js与jq之间的转换, var js=jq[0] var jq=$(js) 记住this对象属于js,用时要转换

Dom

最常用的无非三个.val() .html() .text() 既可以取值,也可以传值
获取或更改属性值 attr(“属性”,”值“) prop(“属性”,”值“)后面更强,因为还可以对check与select操作
KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲bj").removeAttr…("#hobby").prop(“checked”));//boolean值
js可以通过getAttribute获得值,jq好像只可以操作,不可以获取

对css操作 .css(“样式”,“内容”) .addClass(“外部样式名”)与js的.classname类似,也可以移除$("#one").css(“background‐color”,“green”);
.remove可以移除指定对象 .empty可以清除子节点,不包含自己

动画效果
显示:.show(“时间”,“效果”).hide() .toggle()切换 里面的效果swing liner
滑动:.slidedown() .slideup() .slidetoggle 效果同上
淡出:fadeIn() fadeout fadeToggle

核心: 遍历
传统for(var i=0;i<;i++)

jq:
	对象.each(function(index,element){})
	$(对象,function(index,element){})
	var $lis = $("#city li");
	$.each($lis, function(index,element) {
	alert(index+"‐‐"+$(element).html());
	});
	新特性:for(element of 对象){}

事件绑定
对象.on(“触发事件”,function(){})触发事件有:click blur focus mouseover mouseout
$("#btn").on(“click”,function(){
alert(“使用on绑定点击事件”);
})
也可以不通过on,直接对象.click(function(){})也行,当然,.off("")可以取消on里面的事件

注意 这里也支持链式编写

$("#myDiv").mouseover(function(){
	$(this).css("background","green");
	}).mouseout(function(){
	$(this).css("background","red");
	});
还有就是切换方法:对象.hover(funtion1,function2)

**校验**
对象.validate({rules:{},messages:{}})
自定义校验规则
$.validator.addMethod(function(value,element,param)){}param默认时true,如果为false,就不会走这步了

$.validator.addMethod("checkNum",function(value,element,param){
if(param){
//校验15位的规则是否正确 ‐‐‐ 都是数字
var regExp18 = /^[0‐9]{18}|[0‐9]{17}X$/;
if(value.trim().length==18){
//校验格式
return regExp18.test(value.trim());
}
} return true;//放行 不归该校验器校验});

$("#empForm").validate({
rules:{
realname:"required",
username:{
required:true,
rangelength:[5,8]
}}

拓展

: $.fn.extend{方法名:function(){}}方法拓展,可以自己创方法,以便全局使用

$.fn.extend({
           	 mydo:function () {
                this.css("backgroundColor","red")
            	},
           	 mydo2:function () {
                this.css("backgroundColor","yellow")
           	 }
        	})
        	function smydo() {
            $("#mydiv").mydo()
       	 }
        	function smydo2() {
            $("#mydiv").mydo2()
        	}

猜你喜欢

转载自blog.csdn.net/qq_33368151/article/details/84901152