美文网首页
js学习笔记----Day05轮播图和节点概念

js学习笔记----Day05轮播图和节点概念

作者: Pamela_Liu | 来源:发表于2018-04-08 19:48 被阅读0次

轮播图

  • 开关的作用, 使其不能连续点击. 造成offsetX累加使速度变快.

  • 原理: 若动画木有放完, 其进行下次点击时控制让其return.

发送验证码

  • 备份指针

var that = this;

动态跳转


window.location.href = 'https://www.baidu.com/';

  • 方法一: 循环定时器

  • 方法二: 延时定时器(使用了递归, 通俗来说就是寄几调用寄几):


//setTimeout() 中再调用setTimeout()
function fn() {
    count--;
    oh2.innerHTML = count +  '秒后跳转';

    //递归限制条件
    if(count <= 0){
        //动态跳转
        window.location.href = 'https://www.baidu.com/';
        //return
    }else{
        //递归
        //setTimeout(fn , 1000);
        //console.log(arguments.callee);
        setTimeout(arguments.callee, 1000);
    }
}

timer = setTimeout(fn, 1000);

  • arguments.callee 获取当前的函数名(对象方法)

注意递归的用法: 一定要设置限制条件, 否则会造成死循环

bug问题:
  • 解决方案:

1. onclick方法里先清除上一个定时器

2. 开关思想: 进入时判断若正在执行动画让其return. 动画结束时使其关闭

innerHTML 用于修改元素的结构

innerText 用于修改内容.

节点概念

节点概念-树状图.gif
  • 子节点: 包含所有的元素节点, 属性节点, 文本节点, 注释节点, nodeType分别是1,2,3,8

  • 子元素: 元素节点.

节点操作

节点操作.gif js操作DOM一览表.png

1. 创建节点


var h1 = document.createElement('h1'); h1.innerHTML = '我是标题';

2. 添加子节点 .appendChild();

3. 删掉子节点 .removeChild();

注意:

  • 删除时, 只能由父节点删除, 爷爷节点之类的都不可行

  • 若节点找不到, 则返回null

4. 替换子节点 .replaceChild();

5. 插入子节点 .insertBefore(op, h2); //在h2前方插入op

  • 若.insertBefore(op, null); 则插入于末尾, 效果同appendChild();

6. 复制节点 .cloneNode();

获取孩子节点

1. 获取元素的所有节点(包含所有的元素节点, 属性节点, 文本节点, 注释节点, nodeType分别是1,2,3,8):

  • childNodes();

2. 获取元素的所有子元素(指的是元素节点)

  • childrens();
获取兄弟节点

1. 获取当前节点的下一个兄弟元素:

  • nextElementSibling();

2. 获取当前节点的下一个兄弟节点:

  • nextSibling();

3. 获取当前节点的上一个兄弟元素:

  • previousElementSibling();

4. 获取当前节点的上一个兄弟节点:

  • previousSibling();

兼容问题:

nextElementSibling 在IE9以上用这个

nextSibling IE9一下用这个

  • 兼容写法

var next3 = btn.nextElementSibling || btn.nextSibling;

获取父节点
  • parentNode();
    //获取第一个子元素
    console.log(ele.firstElementChild);
   // 或者用
    console.log(ele.firstChild.nextSibling);

    //获取最后一个子节点
    console.log(ele.lastElementChild);    
   //或者用
    console.log(ele.lastChild.previousSibling);
  • firstChild();

  • firstElementChild();

  • lastChild();

  • lastElementChild();

通过类名获取标签的封装

  • getElementsByClassName(); 只支持IE9以上

  • 兼容写法:

    function getEleClassName(dom,className) {
        if (dom.getElementsByClassName){
            // 此方法可以识别   
            return dom.getElementsByClassName(className);
        }else {
            // 方法不能识别 *通配符选择器,可以获取dom下面的所有标签     
            var eles = dom.getElementsByTagName('*');
            // 存放标签    
            var tempArr = [];
            for(var i = 0; i<eles.length; i++){
                if (eles[i].className == className){
                    tempArr.push(eles[i]);            }
            }
            return tempArr;
        }
    }

获取文档元素

  1. 获取文档标题title

2. head

3. body

//用的较多, 不用设置id即可拿到body
document.body

4. html

document.documentElement

5. 往文档中写内容

document.write(); 

九宫格排列

九宫格排列原理.png

相关文章

  • js学习笔记----Day05轮播图和节点概念

    轮播图 开关的作用, 使其不能连续点击. 造成offsetX累加使速度变快. 原理: 若动画木有放完, 其进行下次...

  • js基础day05

    js基础day05 一.简单轮播图 二.复杂轮播图 1.页面 2.右边 3.左边 4.bug bug原因: 每点击...

  • 原生js制作轮播图

    原生js 制作的轮播图 今天学习了一个原生js轮播图的方法。效果图如下 通过点击上下页和中间的点进行翻页,通过改变...

  • JavaScript ☞ day4

    JavaScript基础学习笔记之轮播 轮播效果: index.html文件内容 loog.js文件内容 styl...

  • 三种样式的轮播图

    一、100%比例轮播图 HTML代码 CSS样式 js代码 二、手动箭头轮播图 三、简易轮播图

  • 原生JS轮播图学习笔记

    在JS写轮播图的学习过程当中,不可避免地碰到了许多疑问和值得划下重点的地方,以下如有理解错误的地方,也请多多指教。...

  • 第五周学习内容

    焦点图轮播特效之原理、焦点图轮播样式之布局、焦点图轮播之箭头切换、焦点图轮播之无限滚动。 js简介、用法、输出。

  • 轮播图

    轮播图01 html css js

  • 项目-轮播图

    整个轮播图分为三部分:轮播指标、轮播项目及轮播导航。用boostrap实现轮播图要比用js、jQuery方便的多,...

  • 使用vue-awesome-swiper方法

    在main.js中引入轮播图插件 在基础组件中建立轮播图组件:

网友评论

      本文标题:js学习笔记----Day05轮播图和节点概念

      本文链接:https://www.haomeiwen.com/subject/eummhftx.html