要想和浏览器有交互的动作,即要继续学习DOM,BOM。

JavaScript分为 ECMAScript,DOM,BOM。

BOM (Browser Object Model) 是指浏览器对象模型,他使js有能力和浏览器进行交互;

DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML 文档的所有元素;

在BOM里:

所有浏览器都支持 window 对象。它表示浏览器窗口。

window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。

1. location
  1. location.href --> 获取当前的URL
  2. location.href="http://www.luffycity.com" --> 跳转到指定网址
  3. location.reload() --> 重新加载当前页面

2. setTimeout和clearTimeout
  多少毫秒之后做什么事儿,注意事情只会执行一次; 

var t=setTimeout("JS语句 或者是 函数名",毫秒)

3. setInterval和clearInterval
  每隔多少毫秒之后做什么事儿,可以用作定时器

ar timer = setTimeout(function(){alert(123);}, 3000)
// 取消setTimeout设置
clearTimeout(timer);

 定时器的列子:

<script>
var timer;
<!--在js文件里面报错了,因为要让文档树执行完后,才能得到标签-->
function f() {
var now = new Date();
var nowStr = now.toLocaleString();
// consle.log(nowStr);
//找到输入框
var inEle = document.getElementById("t1");
inEle.value = nowStr;
}
// 点开始按钮的时候就开始出现时间(触发事件),每隔一秒就执行一次 var startEle = document.getElementById("i1");
startEle.onclick = function () {
f();
//setInterval(函数名,毫秒数)
//当多次点击开始,则会生成多个定时器,但是清除只能清除最后一个。
if (timer === undefined){
//setInterval(函数名,毫秒数)
timer = setInterval(f,1000);
}
}; var stopEle = document.getElementById("i2");
stopEle.onclick = function () {
//清除定时器的时候出现了问题,因为定时器在另外一个函数内部,为局部变量。要设为全局的变量,才能共同的使用
clearTimeout(timer);
//清除只是清除那个定时器,但是定时器的值还是存在的,
timer = undefined;
// console.log(timer)
};
</script>  

4.弹出框

1.警告框:

alert("你看到了吗?");  

在DOM里

当网页被加载完成后,浏览器会创建页面的文档对象模型;

这个模型也被称为文档树;

文档树的图形:

DOM标准规定HTML文档中的每个成分都是一个节点(node):

  • 文档节点(document对象):代表整个文档
  • 元素节点(element 对象):代表一个元素(标签)
  • 文本节点(text对象):代表元素(标签)中的文本
  • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
  • 注释是注释节点(comment对象) 

JavaScript 可以通过DOM创建动态的 HTML:

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

对DOM的操作:

1.查找标签:

  1.基本查找:

    1. 根据ID找标签(有且只能找到一个)
      document.getElementById("ID值")
    2. 根据class名字找(找到的可以是多个)
      document.getElementsByClassName("class值")
    3. 根据标签名找(找到的可以是多个)
      document.getElementsByTagName("标签名")

  2.间接的查找:

    1. 找父标签
      document.parentElement
    2. 找子标签(找到的可能是多个)
      document.children
    3. 第一个子标签
      document.firstElementChild
    4. 最后一个子标签
      document.lastElementChild

    兄弟标签是在同一级上寻找的

    5. 上一个兄弟标签
      document.previousElementSibling

    6. 下一个兄弟标签

      document.nextElementSibling

2.创建标签

 非常重要:

var divEle = document.createElement("div");

3. 添加节点
  1. 在someone内部的 最后 添加
    someone.appendChild("标签名")
  2. 在someone内部的某个标签的前面插入
    someone.insertBefore(要插入的新标签, 哪个标签之前)

4.删除节点:

  somenode.removeChild(要删除的节点)  

5.属性的节点:

  1.获取文本节点的值:  

var divEle = document.getElementById("d1")
divEle.innerText // 获得 文本 的值
divEle.innerHTML  //获得 文本的值和标签(也就是所有的内容)
var divEle = document.getElementById("d1")
divEle.innerText="1"
divEle.innerHTML="<p>2</p>"

  attribute 操作: 

    自带的属性通过
      .属性名="属性值"
      imgElem.src="..."
    自定义的属性只能用:
      .setAttribute("s9", "hao") 给属性设置值
      .getAttribute("s9") 获取属性值
      .removeAttribute("s9") 删除属性

6. 样式操作 

  1.通过class进行修改

className  获取所有样式类名(字符串)

classList.remove(cls)  删除指定类
classList.add(cls) 添加类
classList.contains(cls) 存在返回true,否则返回false
classList.toggle(cls) 存在就删除,否则添加 

  2. 通过.style修改
    1. 有中横线的(background-color),将中横线后面的第一个字母换成大写即可,即驼峰式
      obj.style.backgroundColor
    2. 没有中横线的
      obj.style.color

 

7.事件

常用的事件

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick 当用户双击某个对象时调用的事件句柄。 onfocus 元素获得焦点。 // 练习:输入框
onblur 元素失去焦点。 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange 域的内容被改变。 应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动) //上面几个事件是重要的 onkeydown 某个键盘按键被按下。 应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress 某个键盘按键被按下并松开。
onkeyup 某个键盘按键被松开。
onload 一张页面或一幅图像完成加载。
onmousedown 鼠标按钮被按下。
onmousemove 鼠标被移动。
onmouseout 鼠标从某元素移开。
onmouseover 鼠标移到某元素之上。 onselect 在文本框中的文本被选中时发生。
onsubmit 确认按钮被点击,使用的对象是form。

2. 绑定事件的方式
  1. 在标签里直接写属性(onclick=foo())

<div id="d1" onclick="changeColor(this);">点我</div>
<script>
function changeColor(ths) {
ths.style.backgroundColor="green";
}
</script>

  2. 通过JS给标签绑定事件

  3. this --> 代表的是 触发事件的当前标签  

  

<script>
var inEle = document.getElementById("t1");
var vauEle = inEle.value;
//点击文本框的时候
inEle.onfocus = function () {
this.value =""
};
//远离文本框的时候
inEle.onblur = function () {
this.value = vauEle;
}
</script>

  

  

前端——BOM和DOM的更多相关文章

  1. 前端——BOM与DOM

    目录 前戏 window对象 window的子对象 navigator对象(了解即可) screen对象(了解即可) history对象(了解即可) location对象 弹出框 计时相关 DOM H ...

  2. Web前端 --- BOM和DOM

    目录 前端基础之BOM和DOM BOM DOM 前端基础之BOM和DOM BOM是指浏览器对象模型,他使JavaScript有能力与浏览器进行对话 DOM是指文档对象模型,通过它,可以访问HTML文档 ...

  3. 前端BOM和DOM

      前端基础之BOM和DOM   前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些 ...

  4. 前端 -- BOM和DOM

    一,引入 到目前为止,已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...

  5. 前端基础之DOM和BOM

    前端基础之DOM和BOM JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏 ...

  6. JS BOM DOM对象 select联动 计时器 时间 css操作 节点(标签 ) 查找标签 {前端基础之BOM和DOM}

    前端基础之BOM和DOM 前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我 ...

  7. 前端基础之BOM和DOM day52

    前端基础之BOM和DOM   前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互 ...

  8. 前端(4)BOM与DOM

    前端(4)BOM与DOM I/O前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交 ...

  9. 第四章、前端之BOM和DOM

    目录 第四章.前端之BOM和DOM 一.解释BOM和DOM 二.window对象 三.window子对象 四.弹出框 五.计时相关 六.HTML的DOM树 七.查找元素 八.节点操作 九.JS操作CS ...

随机推荐

  1. Web Application Security(Web应用安全)

    Web Application Security 1.web应用面临的主要安全问题 1)黑客入侵:撞库拖库.网页篡改.后门木马.加密勒索.数据泄露 2)恶意内容 2.web应用安全现状 1)网站安全问 ...

  2. mysql GROUP_CONCAT 查询某个字段(查询结果默认逗号拼接)

    Mysql 的 GROUP_CONCAT 函数默认将查询的结果用逗号拼接并返回一个字符串,如:李四,long,张三 1. 常用方式 select GROUP_CONCAT(user_name) use ...

  3. org.hibernate.HibernateException: Duplicate identifier in table for: Waa

    提示表的标识符重复,发现是数据库中的主键id重复了.因为是序列自动生成的. 我原本以为是因为我的序列的问题,序列.nextval()有问题,但是当我在数据库测试时,发现当前序列没有问题.但是当数据插入 ...

  4. Python3学习之路~8.5 SocketServer实现多并发

    前面几节我们写的socket都只能实现服务端与一个客户端通信,并不能实现服务端与多客户端同时通信.接下来我们就来学习一下如何实现服务端同时与多个客户端通信,即并发. Socket Server soc ...

  5. Python3学习之路~7.3 反射

    python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,该四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. ...

  6. xcode 10 模拟器报错

    xcode 10(也可能是任意版本)run 模拟器时,发现会报下面的错误. This app could not be installed at this time.Could not access ...

  7. MySQL 允许局域网内其他网段主机访问本地MySql数据库

    Mac下和Windows下均适合

  8. 2019.4.14 python基础30

    前面学习的变量,数据类型(整型,浮点数,布尔),序列(字符串,列表,元祖,字典,集合) ,可以看做是数据的组织方式.数据可以看做是“砖块”! 流程控制语句是代码的组织方式,可以看做是“混凝土” 一个完 ...

  9. Mysql 5.7优化

    为了达到数据库胡最佳性能 1. 普通用户通过配置软件与硬件来实现 2. 高级用户会寻求机会改善MySQL本身,开发自己的数据存储引擎,硬件应用. 在数据库层面的优化 1. 表设计,通常列有适合的数据类 ...

  10. input实现上传

    很多时候我们会用到上传,实现一个普通的上传也很简单,不用引用繁琐的插件 一个普通的上传 <form action="=upload" method="post&qu ...