java script学习笔记

总结一下自己学习javaScript过程中掌握的知识点和代码片段。
随时更新

什么是javaScript

特点 说明
lightweight 占内存小,易实现
interpreted 没有编译,指令直接执行
object-oriented 面向对象模型
first-class function 函数可以作为值操作,参数,返回值,赋值给变量,存储在数据结构中等.和其他类型一样。

可以做什么

  • 客户端的Web开发
    • jQery
    • Angular JS, React
  • 服务端的应用开发
    • NodeJS
    • Express
  • 浏览器扩展开发
  • 桌面应用开发
  • 移动应用
  • IoT开发

绑定事件

<button type="submit" id="btn_submit"> submit </button>

$('#btn_submit').click(function(){

});

获取页面radio状态

获取readio值
param.gender=document.forms["fm"]["gender"].value;

基本语法

function 函数名()
{
函数代码;
}

<script type="text/javascript">
function rec(){
var mymessage=confirm("你是女士吗?");
if(mymessage==true)
{
document.write("你是女士!");
}
else
{
document.write("你是男士!");
}
}
</script>

prompt 消息对话框

var myname=prompt("请输入你的姓名:");
if(myname!=null)
{ alert("你好"+myname); }
else
{ alert("你好 my friend."); }

JavaScript-打开新窗口(window.open)
window.open([URL], [窗口名称], [参数字符串])

隐藏/显示
mychar.style.display = ‘none’;//block

className 属性设置或返回元素的class 属性。
object.className = classname

var myarr=new Array(); //定义数组
myarr[0]=80;
myarr[1]=60;
myarr[2]=99;

var myarray = new Array(66,80,90,77,59);//创建数组同时赋值
var myarray = [66,80,90,77,59];//直接输入一个数组(称 “字面量数组”)
注意:数组存储的数据可以是任何类型(数字、字符、布尔值等)

==和===的区别

== equality 等同,=== identity 恒等。
==, 两边值类型不同的时候,要先进行类型转换,再比较。
===,不做类型转换,类型不同的一定不等。

var a = 3;
var b = "3";

a==b 返回 true
a===b 返回 false

因为a,b的类型不一样
===用来进行严格的比较判断

AJAX

XMLHttpRequst来实现和服务端的异步通信

var request=new XMLHttpRequest();
open(method,url,async)
send(string)

//发送请求
request.open("POST","create.php",true);
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send("name=用户名&gender=男");

//获取响应
responseText 获取字符串形式
responseXML 获取XML形式
status, statusText
getAllResponseHeader()获取所有响应报头
getResponseHeader()查询某个字段的值
readyState属性,获取响应通知
0:请求未初始化,open还没调用
1:连接已建立,open已经调用了
2:请求已接收到头信息
3:请求处理中,接收到响应主体
4:请求已完成,且响应已就绪。

request.onreadystatechange=function(){
if(request.readyState===4 && request.status===200)
{
//do something
JSON.parse(...)
}
}

jQuery.ajax([settings])
type:类型 GET,POST等
url:
data:对象,发送的数据
dataType:预期返回的数据类型json
success:是一个方法,成功的回调函数
error:是一个方法,请求失败回调函数,传入XMLHttpRequest对象

<script>
$(document).ready(function(){
$("#search").click(function(){
$.ajax({
type:"POST",
url:"www.sss",
dataType:"json",
data:{
name:$("#name").val(),
pwd:$("#pwd").val()
}
if(data.success){
//success
$("#searchResult").html(data.msg);
}else{
//failed
},
error:function(jqXHR){
alert("failed" + jqXHT.status);
}
})
})
});
</script>

jQuery

语法

$(selector).action()

  • 美元符号定义 jQuery
  • 选择符(selector)“查询”和“查找” HTML 元素
  • jQuery 的 action() 执行对元素的操作
$(this).hide() - 隐藏当前元素
$("p").hide() - 隐藏所有段落
$(".test").hide() - 隐藏所有 class="test" 的所有元素
$("#test").hide() - 隐藏所有 id="test" 的元素
$(document).ready(function(){

--- jQuery functions go here ----

});

这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码。

跨域

6818d238.png

处理方法JSONP(json padding)解决GET请求跨域访问问题
HTML5提供的XMLHttpRequest level2提供的跨域解决方法IE10以下不支持
服务端修改

//*表示所有域名,也可以指定特定的域名
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:POST,GET");

判断元素是否存在

$(document).ready(function () {
obj = document.getElementById("ShowLoginModal");
if (obj)
{
openLoginModal();
}
})

点击链接地址栏不显示#号

href="javascript:void(0)"