data-xxx 自定义属性名

获取自定义属性值 event.target.dataset.aid

  1. <!-- 内联事件 -->
  2. <!--
  3. data-自定义属性名
  4. -->
  5. <button id="btn" data-aid="123456" onclick="go(event)">btn</button>
  6. <script>
  7. /*
  8. 定义data-aid="123456"
  9. 获取自定义属性值 event.target.dataset.aid
  10. */
  11. function go(event){
  12. console.log("hello world");
  13. console.log(event.target.dataset.aid)
  14. }
  15. </script>

previousSibling,previousElementSibling…

previousSibling 属性与 previousElementSibling 属性的差别:

  • previousSibling 属性返回元素节点之前的兄弟节点(包括文本节点、注释节点);
  • previousElementSibling 属性只返回元素节点之前的兄弟元素节点(不包括文本节点、注释节点);
firtChild 获取第一个子节点(所有节点类型) firtElementChild 获取第一个子元素节点
lastChild 获取最后一个子节点 lastElementChild 获取最后一个子元素节点
nextSibling 获取下一个兄弟节点 nextElementSibling 获取下一个兄弟元素节点
previousSibling 获取上一个兄弟节点 previousElementSibling 获取上一个兄弟元素节点
  1. <div>hello</div>
  2. <ul id="app">
  3. <li>html</li>
  4. <li>css</li>
  5. </ul>
  6. <div>world</div>
  7. <script>
  8. var app = document.getElementById("app");
  9. console.log(app.previousElementSibling)
  10. </script>

classList,add(),remove()

class列表,添加、移除class选择器

  1. <style>
  2. .current{
  3. color:red;
  4. }
  5. </style>
  6. <!-- js: jquery:
  7. add(); addClass();
  8. remove(); removeClass();
  9. -->
  10. <p id="app">hello world</p>
  11. <button id="btn">移除class</button>
  12. <script>
  13. var app = document.getElementById("app");
  14. var btn = document.getElementById("btn");
  15. app.onclick = function(){
  16. this.classList.add("current")
  17. }
  18. btn.onclick = function(){
  19. app.classList.remove("current")
  20. }
  21. </script>

toggle() 切换元素状态

  1. <style>
  2. .current{
  3. color:red;
  4. }
  5. </style>
  6. <!--
  7. toggle toggleClass();切换状态
  8. contains hasClass() 判断是否包含某个class
  9. -->
  10. <p id="app">hello world</p>
  11. <script>
  12. var app = document.getElementById("app");
  13. app.onclick = function(){
  14. // if(this.classList.contains("current")){
  15. // this.classList.remove("current")
  16. // }else{
  17. // this.classList.add("current")
  18. // }
  19. this.classList.toggle("current")
  20. }
  21. </script>

prepend(),append()

prepend() 方法在被选元素的开头(仍位于内部)插入指定内容。 append() 方法在被选元素的结尾(仍然在内部)插入指定内容。

  1. <ul id="app">
  2. <li>html</li>
  3. </ul>
  4. <script>
  5. // append,prepend
  6. var app = document.getElementById("app");
  7. var p = "<h1>hello world<h1>";
  8. app.prepend(p);
  9. </script>

after(),before()

before() 方法在被选元素前插入指定的内容。 after() 方法在被选元素后插入指定的内容。

  1. <p id="p">hello world</p>
  2. <script>
  3. var p = document.getElementById("p");
  4. p.after("2")
  5. p.before("1")
  6. </script>

xas.png

参数传递不严谨

  1. /* 函数的参数
  2. 传递不定参 不严谨
  3. */
  4. function go(a){
  5. console.log(a);
  6. }
  7. go(10,20)

arguments

  1. /* js传不定参,函数内部有一个arguments对象,接收传递过来的参数
  2. arguments对象是一个类数组对象
  3. */
  4. function go(a){
  5. console.log(arguments)
  6. console.log(a);
  7. }
  8. go(10,12);

123.png

js没有重构只能覆盖

  1. /* 重载:就是根据参数的不同,动态决定调用哪个方法 */
  2. /* js中没有重载的概念,因为重复声明,下面的会覆盖上面的声明 */
  3. function go(a){
  4. console.log(a);
  5. }
  6. function go(a,b){
  7. console.log(a+b);
  8. }
  9. go(10);
  10. go(10,20)

使用arguments模拟重载

  1. /* 使用arguments模拟重载 */
  2. function go(){
  3. if(arguments.length ==1){
  4. console.log(arguments[0])
  5. }else if(arguments.length == 2){
  6. console.log(arguments[0]+arguments[1])
  7. }
  8. }
  9. go(1)
  10. go(10,20)

return

  1. /* 函数return之后,return后面的语句就不会再执行了
  2. 作用:将函数内部的值返回到外部
  3. */
  4. function go(){
  5. // return "hello world";
  6. console.log("good")
  7. }
  8. console.log(go())

函数可以作为对象的方法

  1. // 函数可以作为对象的方法
  2. var obj = {
  3. name:"zhang",
  4. sayName:function(){
  5. console.log(this.name);
  6. }
  7. }
  8. // 在方法中,谁执行方法,this就指向谁
  9. obj.sayName();

函数在对象中作为方法的三种语法

  1. /*
  2. 函数在对象中作为方法的语法(三种)
  3. */
  4. var obj = {
  5. name:"shang",
  6. sayName(){
  7. console.log(this.name)
  8. },
  9. sayAge:()=>{
  10. console.log(18)
  11. },
  12. saySkill:function(){
  13. console.log("javascript")
  14. }
  15. }

todolist

通过下标值indexOf实现 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 如果要检索的字符串值没有出现,则该方法返回 -1。

  1. <!-- todoList -->
  2. <input type="text" id="input">
  3. <ul id="app">
  4. </ul>
  5. <script>
  6. var arr = [];
  7. var input = document.getElementById("input");
  8. var app = document.getElementById("app");
  9. input.onkeydown = function (event) {
  10. if (event.keyCode == 13) {
  11. if (arr.indexOf(this.value) == -1 && this.value!= "") {
  12. arr.push(this.value);
  13. var li = document.createElement("li");
  14. li.innerHTML = this.value;
  15. app.append(li);
  16. }
  17. }
  18. }
  19. </script>

xadx.png

arr.indexOf(value) 获取数组元素的下标

  1. var arr= ["html","css"];
  2. /* indexOf arr.indexOf(value) 获取数组的下标 */
  3. console.log(arr.indexOf("js"))

数组

数据处理

  1. var obj =[
  2. {name:"cheng",age:18,skill:"vue"},
  3. {name:"li",age:17,skill:"js"},
  4. {name:"zhang",age:16,skill:"html"},
  5. ]
  6. console.log(obj);
  7. /* arr=[{name:"xx",skill:"xx"},{name:"xx",skill:"xx"}] */
  8. var arr = [];
  9. for(var i=0;i<obj.length;i++){
  10. var name = obj[i].name;
  11. var skill = obj[i].skill;
  12. arr.push({
  13. name:name,
  14. skill:skill
  15. })
  16. }
  17. console.log(arr);

键和值(key:value)相同的时候只用写一个

  1. var name="zhang";
  2. var age =19;
  3. /* es6 键和值(key:value)相同的时候只用写一个*/
  4. var obj ={
  5. name,
  6. age
  7. }
  8. console.log(obj)

例(简写)

  1. for(var i=0;i<obj.length;i++){
  2. var {name,skill} = obj[i];
  3. arr.push({
  4. name,
  5. skill
  6. })
  7. }

解构

  1. /* 解构
  2. 1.左边读取的字段,右手边必须有
  3. 2.读取的是右边的一个层级
  4. */
  5. var obj = {
  6. name: "lisi", age: 18, skill: "vue", s: {sex: "male"}
  7. };
  8. // var name = obj.name;
  9. // var age = obj.age;
  10. // var skill = obj.skill;
  11. var { name,s} = obj;
  12. console.log(name)
  13. console.log(s.sex)

点击切换区域

  1. <ul>
  2. <li class="current">html</li>
  3. <li>css</li>
  4. </ul>
  5. <div class="parent">
  6. <div class="html">
  7. html
  8. </div>
  9. <div class="css">
  10. css
  11. </div>
  12. </div>
  1. .parent{
  2. width:200px;
  3. height: 200px;
  4. border:1px solid #333;
  5. position: relative;
  6. }
  7. .parent>div{
  8. width:100%;
  9. height: 100%;
  10. position: absolute;
  11. }
  12. .html{
  13. background-color: red;
  14. z-index: 100;
  15. }
  16. .css{
  17. background-color: yellow;
  18. }
  19. .current{
  20. color:orange;
  21. }
  22. li{
  23. cursor: pointer;
  24. }


  1. var lis = document.getElementsByTagName("li");
  2. var divs = document.querySelectorAll(".parent div");
  3. for(let i=0;i<lis.length;i++){
  4. lis[i].index = i;
  5. lis[i].onclick = function(){
  6. /* 1.遍历让所有的li移除class="current" */
  7. for(let i=0;i<lis.length;i++){
  8. lis[i].classList.remove("current");
  9. }
  10. /* 2.让当前元素添加class="current" */
  11. this.classList.add("current")
  12. console.log(this.index)
  13. /* 3.让所有的div隐藏 */
  14. for(let i=0;i<divs.length;i++){
  15. divs[i].style.display = "none"
  16. }
  17. /* 4.让对应的下标的div去显示 */
  18. divs[this.index].style.display = "block";
  19. }
  20. }

创鑫时代.png

querySelectorAll() 方法返回文档中匹配指定 CSS 选择器的所有元素,返回 NodeList 对象。 getElementsByTagName() 方法可返回带有指定标签名的对象的集合 HTMLCollection。