01.定时器补充

function fn(){
   console.log(1);
}
setInterval("fn()",100);  //定时器调用匿名函数
/*
  function(){} (常用)
  fn(); //这个直接就运行了,会使运行结果不正确
  "fn()"
*/

02.window对象

//都是window下面的方法,其中,这三个对话框都有阻塞浏览器其他功能的执行(阻止程序的运行)
alert('dfjjf'); //弹出一个对话框
confirm(); //弹出一个带有确定和取消按钮的对话框,点击确定返回true,点击取消返回false
prompt(); //输入框对话框,点击确定返回输入的内容,点击取消返回null

//设置窗口大小
open('url','(名称)','width = 400px,height:500px');
open('http://www.baidu.com','','width=300px,height;500px');
//window.resize(1000,200);在打开的百度的页面,改变窗口大小
close();  //关闭窗口

03.BOM

1.history对象

history.go()

参数: -1 后退 0 刷新 1前进

history.back(); 后退

history.forward();前进

2.location对象

location.href = 'url' 页面的跳转

location.reload(); 页面的刷新,如果参数为true,清除缓存

3.navigator对象

navigator.userAgent

pc端:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"

移动端:"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"

简单测试:
location.href='http://www.baidu.com';   //页面跳转(属性)
location.reload();   //页面刷新(方法 )
navigator.userAgent();   //在控制台输入之后,pc端打印出"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"
navigator.userAgent(); //移动端结果:"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"

04.window的事件

1.window.onload
window.onload = function(){
//等待页面加载完成之后,再执行onload里面的代码
}
2.window.onscroll(滚动条事件)
window.onscroll = function(){
   //高频触发,滚动条只要滚动,就触发!!!
}

05.滚动条事件案例

吸顶效果

<style>
       body{
           height:4000px;
      }
   *{
       margin:0;
       padding:0;
  }
   header{
       width:100%;
       height:150px;
       background:red;
  }
   nav{
       width:100%;
       height:40px;
       background: blue;
  }
</style>
<header></header>
<nav id="nav1"></nav>
<script>
   /*
  滚动条滚动,获取滚动条的高度(存在兼容性)
  document.documentElement.scrollTop;
  document.body.scrollTop;
  */
   onscroll = function(){
  var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;  //兼容性
   if(scrollTop >= 150){
       nav1.style.position = 'fixed';
       nav1.style.top = 0;
  }else{
       nav1.style.position = 'static';  //让它恢复原样
  }
}
</script>

06.延时器

setTimeout(function(){

},1000)

<style>
width:100%;
height:100%;
   background:blue;
</style>
<div id="box"></div>
<script>
   var height = 300;
setTimeout(function(){
       var timer = setInterval(function(){
           //控制box的height值,实时减小box的height
           height -= 10;
           box.style.height = height + 'px';
           //关闭定时器
           if(height <= 0){
               clearInterval(timer);
          }
      },30)
  },0)
</script>
setTimeout(function(){
console.log(0);
},0);  //设置为0时,立即打印
console.log(1);
//结果是1 0 由于异步加载的原因

07.回到顶部

<style>
   *{
       margin:0;
       padding:0;
}
section{
       width:400px;
       height:2000px;
       background:pink;
  }
p{
       font-size:20px;
       color:black;
  }
#btn{
  font-size:40px;
width:50px;
height:50px;
display:block;
position:fixed;
right:0;bottom:0;
}
</style>
<section>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
<p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
   <p>春暖花开</p>
</section>
<button id="btn">^</button>
<script>
   function goTop(){
  //速度
  var speed = 100;
  //开启定时器
  var timer = setInterval(function(){
           //获取滚动条的高度
           var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
           //设置滚动条的高度
           document.documentElement.scrollTop = document.body.scrollTop = scrollTop - speed;
           //加速
           speed += 10;
           //清除加速器
           if(scrollTop <= 0){
               clearInterval(timer);
          }
      },30)
}
btn.onclick = function(){
       goTop();
  }
</script>

08.进度条

<style>
   *{
  margin:0;
  padding:0
}
#box{
width:800px;
height:50px;
background:blue;
}
   #box1{
  width:0;
height:50px;
background:red;
}
</style>
<div id="box">
   <div id="box1"></div>
</div>
<script>
       var speed = 10;
var timer = setInterval(function(){
           //offsetWidth 获取元素的高度的
           box1.style.width = box1.offsetWidth + speed + 'px';
           //清除定时器
           if(box1.offsetWidth >= 800){
               clearInterval(timer);
}
      },10)
</script>

09.DOM

1.dom节点的获取

document.getElementById(id); //返回对拥有指定id的第一个对象进行访问

document.getElementsByName(name); //返回带有指定名称的节点集合

document.getElementsByTagName(tagname); //返回带有指定标签名的对象集合

document.getElementsByClassName(classname); //返回带有指定class名称的对象集合(IE8以下不兼容)

2.ES5新增获取元素

document.querySelector(); (IE8以下不兼容,不包括IE8)

eg:document.querySelector('#id > .box')

document.querySelectorAll() //获取对应的全部元素,返回伪数组

parentNode 属性返回某个节点的父节点

3.节点的创建

document.createElement('div'); //元素节点

document.createTextNode('nnnn'); //文本节点

4.添加节点

父节点.appendChild(需要添加的节点)

5.节点克隆

cloneNode() 如果参数为true,克隆包括子节点

6.删除节点

父节点.removeChild(子节点)

节点.remove();

7.检测节点类型

节点一共分为3种类型:

元素节点:<span></span>

属性节点:<span id ="xxx"></span>

文本节点:djgkf

nodeType属性:检测节点的类型

元素类型 节点类型

元素element 1

属性attr 2

文本text 3

注释comments 8

文档document 9

简单测试:
<section id="box">
   <div>kkkk</div>
<div>1</div>
<div>2</div>
<div>3</div>
</section>
<div id="box"></div>
<input type="text" name="userName">
<input type="text" name="userName">
<input type="text" name="userName">
<section class="wrap"></section>
<script>
   var oBox = document.getElementById('box');
console.log(oBox); var dwrap = document.getElementsByTagName('section');
console.log(dwrap); var obj = document.getElementsByClassName('wrap');
console.log(obj);

var userName = document.getElementsByName('userName');
console.log(userName);

var obj = document.querySelector('input');
console.log(obj);  //获取一个input

var obj = document.querySelectorAll('input');
console.log(obj);  //获取所有的input

var obj = document.querySelector('#box');
console.log(obj.parentNode); //获取节点的父节点

var dwrap = document.getElementsTagName('*');
console.log(dwrap);  //获取页面所有 var createDiv = document.createElement('div');
console.log('createDiv');  //创建元素节点

var createTxt = document.createTextNode('nnn');
console.log(createText);  //创建文本节点

//添加节点
var oBox = document.getElementById('box'); //首先获取父节点
var createDiv = document.createElement('div'); //创建新节点
oBox.appendChild(createDiv);//将创建的新节点添加到父节点里面

//节点克隆
var oBox = document.getElementById('box');
var newBox = oBox.cloneNode(true);
document.body.appendChild(newBox);

//删除节点
var oBox = document.getElementById('box');
var aDiv = oBox.querySelectorAll('div');
console.log(aDiv);  //父节点下子节点的节点集合
oBox.removeChild(aDiv[1]); //删除下标为1的节点
aDiv[0].remove(); //remove谁调用,就删谁

//节点的集合,给每个节点操作,必须遍历
for(var i = 0 ; i < aDiv.length ; i++){
       console.log(aDiv[i]);
       console.log(aDiv[i].nodeType); //节点的类型为1,表明是元素
}
</script>

10.childNodes

childNodes 包括元素节点也包括文本节点

children 只能获取元素节点

检测节点的类型:nodeType

节点的过滤:如果节点类型为3(文本节点),直接remove();

简单测试:
<section>
<div>1<div>
  <div>2<div>
  <div>3<div>(8个div)
</section>
var aDiv = document.getElementById('box').childNodes;//NodeList(17) [text, div, text, div, text, div, text, div, text, div, text, div, text, div, text, div, text](回车造成的text文本节点)
var adIV = document.getElementById('box').children;//HTMLCollection(8) [div, div, div, div, div, div, div, div]
for(var i = 0 ; i <aDiv.length ; i++){
  if(aDiv[i].nodeType ==3){
      aDiv[i].remove();
  }
}
console.log(aDiv);

作业(根据用户输入的数值打印表格)

根据用户输入的数值打印表格
要求:每一行的最后有一个按钮,点击按钮之后,删除整行
单元格内输入1-100随机数,每个表格的背景颜色随机
<style>
      *{
       margin:0;
       padding:0;
  }
td{
       width:50px;
       height;50px;
       border:1px solid red;
       text-align:center;
  }
tr button{
       width:100px;
       height:50px;
       text-align:center;
       font-size:16px;
       font-weigth:bold;
  }  
</style>
<label>输入的行数</label>
<input type="text" id="txt1">
<label>输入的列数</label>
<input type="text" id="txt2">
<button>打印</button>
<script src="../myApi.js"></script>
<script>
   var
oTxt1 = document.getElementById('txt1');
oTxt2 = document.getElementById('txt2');
obtn = document.querySelector('#btn');
obtn.onclick = function(){
       //获取文本框的value的值
       var
      rows = oTxt1.value,
           cols = oTxt2.value;
       //创建table标签
       var createTable = document.createElement('table');
       //根据用户输入的行数和列数,创建tr td
       //创建tr
       for(var i = 0 ; i < rows ; i++){
           var createTr = document.createElement('tr');
           //创建td
           for(var j = 0 ; j < cols ; j++){
               var createTd = document.createElement('td');
               //给td添加随机数
               createTd.innerHTML = randomNum(1,100);
               //给td添加随机背景色
               createTd.style.background = randomColor();
               //把td放在tr里面
               createTr.appendChild(createTd);
          }
           //每一行创建一个按钮
           var createBtn =document.createElement('button');
           createBtn.innerHTML = '删除本行';
           createBtn.onclick = function(){
               //删除本行,this指向的是单击的按钮
               this.parentNode.remove();
          }
           //把按钮添加到行
           createTr.appendChild(createBtn);
           //把tr添加到table
      createTable.appendChild(createTr);
      }
       //把table放在body里面
document.body.appendChild(createTable);
  }
</script>

window对象,BOM,window事件,延时器,DOM的更多相关文章

  1. window对象BOM

    BOM的和新对象是window,他表示流浪器的一个实例,作为一个Global对象,有权访问parseInt()等方法 在全局作用域声明的变量,函数都有钱访问 ; function sayName () ...

  2. window 对象常见的事件

    1.页面加载事件 方式1:window.onload = function(){ } window.addEventListener('load',function(){ }) window.onlo ...

  3. JavaScript---网络编程(6)-Dom和Bom模型概念讲解(节点获取,window对象)

    本节讲Dom和Bom模型概念讲解(节点获取,window对象). out.js: 写了2个输出到页面的函数. function println(param){ document.write(param ...

  4. Javascript高级编程学习笔记(27)—— BOM(1)window对象1

    ECMAScript是JS的核心 但是对于在浏览器中运行的JS,BOM显然才是真正的核心 我们知道JS是由三个部分组成的 BOM.DOM.ECMAScript 之前的文章我们主要介绍的是ECMAScr ...

  5. 第8章 浏览器对象模型BOM 8.1 window对象

    ECMAScript是javascript的核心,但如果要在web中使用javascript,那么BOM(浏览器对象模型)则无疑是真正的核心.BOM提供了很多对象,用于访问浏览器的功能,在浏览器之间共 ...

  6. javascript之BOM对象(一window对象)

    javascript包含三个部分,ECMAScript,BOM和DOM.ECMAScript是javascript的核心,包含javascript的基础语法.在Web中使用javascript,BOM ...

  7. window对象的属性及事件。

    不同的运行环境有不同的“顶层对象”,而在浏览器的环境中,顶层对象就是window对象.window就是指当前的浏览器窗口. 例:var a = 1: window.a; //1 1.window对象的 ...

  8. 【使用 DOM】使用 Window 对象

    1. 获取 Window 对象 可以用两种方式获得Window对象.正规的HTML5方式是在Document对象上使用defaultView属性.另一种是使用所有浏览器都支持的全局变量window . ...

  9. DOM对象和window对象

    本文内容: DOM对象 Window 对象 首发日期:2018-05-11 DOM对象: DOM对象主要指代网页内的标签[包括整个网页] 比如:document代表整个 HTML 文档,用来访问页面中 ...

随机推荐

  1. JAVA-SpringMVC 概述及组件介绍

    一.SpringMVC概述 SpringMVC是一个WEB层.控制层框架,主要用来负责与客户端交互,业务逻辑的调用. SpringMVC是Spring家族中的一大组件,Spring整合SpringMV ...

  2. 使用PIP键盘输入数字小数位--Smart LCD

    应用范例: 使用TOPWAY Smart LCD (HMT050CC-C) 使用PIP键盘输入数字小数位 第一步 建立工程 第二步 建立三个页面,导入图片 点击工作区域, 右面显示页面属性 属性中Ba ...

  3. Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(集群版)

    上篇文章Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(单机版)讲了在 idea 里以单机的方式启动zookeeper,这篇介绍一下以集群的方式启动. 集群方式启动,才会真正 ...

  4. 从原理层面掌握@ModelAttribute的使用(使用篇)【一起学Spring MVC】

    每篇一句 每个人都应该想清楚这个问题:你是祖师爷赏饭吃的,还是靠老天爷赏饭吃的 前言 上篇文章 描绘了@ModelAttribute的核心原理,这篇聚焦在场景使用上,演示@ModelAttribute ...

  5. alpine 镜像 java 日志中文问号乱码

    0x00 前言 吾使用 alpine 作为基础镜像构建了 jdk8 镜像,为线上业务的 java 微服务架构提供支持,但是有容器运行的 java 服务中打印的日志中一旦出现中文,就会出现诸如以下的 ? ...

  6. 本地VSCode编辑远程服务器文件

    前言 先说下我的场景:服务器搭设了一系列复杂环境,然后需要使用PHP实现某些功能 选这种远程编辑的原因: 首先PHP打死我也不想装(这个现在是出了VB外最惹人厌的语言了) 然后环境比较复杂,本地装下比 ...

  7. 阿里、网易和腾讯面试题 C/C++

    一.线程.锁 1.Posix Thread互斥锁 线程锁创建 a.静态创建 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; b.动态创建 pthr ...

  8. java并发系列 - 第28天:实战篇,微服务日志的伤痛,一并帮你解决掉

    这是java高并发系列第28篇文章. 环境:jdk1.8. 本文内容 日志有什么用? 日志存在的痛点? 构建日志系统 日志有什么用? 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复 ...

  9. nginx之gzip压缩提升网站速度

    目录: 为啥使用gzip压缩 nginx使用gzip gzip的常用配置参数 nginx配置gzip 注意 为啥使用gzip压缩 开启nginx的gzip压缩,网页中的js,css等静态资源的大小会大 ...

  10. Sqlserver 存储过程中使用事务

    ALTER PROCEDURE [dbo].[Purchase_Create]@Docid varchar(100),    ----  搜索唯一编号@Title varchar(100),    - ...