前言 闲来无事,简单总结学习中遇到的与js相关的知识,因为暂时用的不多,记的比较随意
js基础 引用方法
标签引用1 2 3 <script> alert("Hello,World!" ); </script>
文件引用1 <script defer="defer" src="https://www.yuketang.cn/static/lesson/html/sentry.js" ></script>
常用的js宿主对象 JavaScript 的宿主对象是指在 JavaScript 运行环境中提供的对象,这些对象通常不是由 JavaScript 语言本身定义的,而是由宿主环境(如浏览器、Node.js等)提供的。宿主对象提供了与外部环境的交互能力,例如访问文档、控制网络请求等。
浏览器对象 window对象 1 2 3 4 5 6 7 8 9 10 11 window .close()window .open('链接地址' )以下可以不带 window 前缀 window .alert("sometext" )window .confirm("sometext" )window .prompt("sometext" ,"defaultText" );window .setTimeout(function , milliseconds ) ;window .setInterval(function , milliseconds ) ;
Navigator对象 1 var ua = navigator.userAgent;
Location对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 location属性 { "href" : "http://127.0.0.1:5500/jstext.html?1=1" , "origin" : "http://127.0.0.1:5500" , "protocol" : "http:" , "host" : "127.0.0.1:5500" , "hostname" : "127.0.0.1" , "port" : "5500" , "pathname" : "/jstext.html" , "search" : "?1=1" , } 方法 location.assign("https://www.baidu.com" ); location.reload(true ); location.replace("https://www.baidu.com" );
History对象 1 2 history.back(); history.forward();
consolo对象 1 2 3 4 5 6 <script> console .log("输出一条日志" ); console .info("输出一条信息" ); console .warn("输出一条警告" ); console .error("输出一条错误" ); </script>
Document对象
查找元素节点1 2 3 4 5 6 7 8 <button id="btn" >我是按钮</button> document .getElementById("btn" ); <button class ="btn" href ="" > 我是按钮</button > document .getElementsByTagName("button" );document .getElementsByClassName("btn" ); document .querySelector(".btn" ) document .querySelectorAll(CSS选择器)
查看改变元素1 2 3 4 5 6 7 8 var all_radio = document .getElementById("door_form" ).elements;if (all_radio[i].checked) btn.innerText = "我是JavaScript的按钮" ; box.innerHTML = "<h1>我是Box中的大标题</h1>" ; a.href="https://www.baidu.com" ; a.setAttribute("href" , "https://www.baidu.com" ); box.style.background = "green" ;
节点操作1 2 3 4 5 6 7 8 1、创建元素节点:document.createElement(tagName) 2、创建文本节点:document.createTextNode="str" 3、追加子节点:parent.appendChild(ele) 4、追加子节点:parent.insertBefore(a,b) 5、删除子节点:parent.removeChild(ele) 6、删除自身节点:ele.remove( ) 7、替换节点:parent.replaceChild(a,b) 8、复制节点:ele.cloneNode("true|false")
原生对象 avaScript 的原生对象是 JavaScript 语言本身定义的对象,它们提供了基本的功能和数据结构。原生对象不依赖于宿主环境(如浏览器或 Node.js),可以在任何 JavaScript 环境中使用
事件 在 JavaScript 中,事件是用户与网页交互时触发的动作
鼠标事件 1 2 3 4 5 6 7 8 9 10 11 12 var textInput = document .getElementById("text" ); textInput.onfocus = function ( ) { this .style.background = "red" ;… function onblur ( )此外还有 onclick 当单击鼠标时运行脚本。ondblclick 当双击鼠标时运行脚本。onscroll 当滚动元素的滚动条时运行脚本。
键盘事件 1 2 3 4 5 6 7 8 9 10 11 12 onkeydown 当按下按键时运行脚本。 onkeyup 当松开按键时运行脚本。 onkeypress 当按下并松开按键时运行脚本 键盘属性 ctrlKey 返回当事件被触发时,“CTRL” 键是否被按下。 确定单击鼠标按钮时是否按下了 "CTRL" 键: if (event.ctrlKey) { alert("The CTRL key was pressed!"); } else { alert("The CTRL key was NOT pressed!"); }
事件绑定 使用 addEventListener() 方法来绑定事件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var form = document .getElementById('mkdir' ); form.addEventListener('submit' , function (e ) { e.preventDefault(); var formData = new FormData(form); var xhr = new XMLHttpRequest(); xhr.open('POST' , 'mkdir.php' ); xhr.send(formData); xhr.onreadystatechange = function ( ) { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200 ) { alert('创建成功' , 'info' ); } else { alert(json['error' ], 'danger' ); } } }; });
与后端交互 ajax AJAX 的核心是 XMLHttpRequest 对象。 所有现代浏览器都支持 XMLHttpRequest 对象。 XMLHttpRequest 对象用于幕后同服务器交换数据,这意味着可以更新网页的部分,而不需要重新加载整个页面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var ajax = new XMLHttpRequest();ajax.open("get" , "users.json" ); ajax.open("GET" ,"/try/ajax/demo_get.php?t=" + Math .random(),true ); ajax.open("POST" ,"/try/ajax/demo_post2.php" ,true ); ajax.setRequestHeader("Content-type" ,"application/x-www-form-urlencoded" ); ajax.send("fname=Henry&lname=Ford" ); ajax.send(); ajax.onreadystatechange = function ( ) { if (ajax.readyState == 4 && ajax.status == 200 ) { console .log(ajax.responseText); } };
fetch 1 2 3 4 5 6 7 8 9 sn (e, t ) { e && t && fetch("/check.php" , { method : "POST" , headers : { "Content-type" : "application/x-www-form-urlencoded; charset=UTF-8" }, body : "score=" + parseInt (e).toString() + "&checkCode=" + md5(parseInt (e).toString() + t) + "&tm=" + (+new Date ).toString().substring(0 , 10 ) }).then(e => e.text()).then(e => alert(e)) }
async/await async是一个加在函数前的修饰符,被async定义的函数会默认返回一个Promise对象resolve的值。因此对async函数可以直接then,返回值就是then方法传入的函数。
await 也是一个修饰符,只能放在async定义的函数内。可以理解为等待。 await 修饰的如果是Promise对象:可以获取Promise中返回的内容(resolve或reject的参数),且取到值后语句才会往下执行; 如果不是Promise对象:把这个非promise的东西当做await表达式的结果
RxJS (Javascript 的响应式扩展) 1 2 3 4 o.http.post("/api/logout" , null ).subscribe((function ( ) { o.token = null , o.router.navigate(["/login" ]).then((function ( ) { n && o.messageService.success("退出登录" ) }))
JQuery框架 jQuery 库可以通过一行简单的标记被添加到网页中<script language="javascript" type="text/javascript" src="https://www.leavesongs.com/content/templates/K-BLUE1.2/js/jquery-1.8.3.min.js"></script>
jQuery 入口函数:
1 2 3 4 5 6 7 $(document ).ready(function ( ) { }); 或者 $(function ( ) { });
基础语法: $(selector).action()
jQuery 选择器 元素选择器 $("p:first")
#id 选择器 $("#test")
.class 选择器 $(".test")
属性选择器$("[name='user']")
jQuery AJAX 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 function deletefile ( ) { var filename = $(this ).parent().attr("filename" ); var data = { "filename" : filename }; $.ajax({ url : 'delete.php' , type : 'POST' , data : data, dataType : 'json' , contentType : "application/json;charset=UTF-8" , success : function (json ) { if (json['success' ]) { toast('删除成功' , 'info' ); } else { toast(json['error' ], 'danger' ); } setTimeout (function ( ) {location.reload();}, 1000 ); } }); } $(document ).ready(function ( ) { $(".delete" ).click(deletefile); $('.fileLabe2' ).click(function ( ) { var f = $(".fileLabe2" ).attr("f" ); var parts = f.split('/' ); var parentPath='/' ; if (parts.length>3 ) var parentPath = parts.slice(0 , -2 ).join('/' ); var form = $('<form method="POST"></form>' ); form.attr('action' , 'index.php' ); var input = $('<input type="hidden" name="f" value="' + parentPath + '"></input>' ) $(document .body).append(form); $(form).append(input); form.submit(); form.remove(); }); })