JavaScript入门几个概念

JavaScript入门几个概念

刚刚入门JavaScript的时候,搞懂DOM、BOM以及它们的对象document和window很有必要。

  • DOM是为了操作文档出现的API,document是它的一个对象。
  • BOM是为了操作浏览器出现的API,window是它的一个对象。

DOM

When a web page is loaded, the browser creates a Document Object Model of the page.
DOM(Docment Object Model文档对象模型)

DOM就是针对 HTML 和 XML 提供的一个API。什么意思?就是说为了能以编程的方法操作这个 HTML 的内容(比如添加某些元素、修改元素的内容、删除某些元素),我们把这个 HTML 看做一个对象树(DOM树),它本身和里面的所有东西比如<div></div>这些标签都看做一个对象,每个对象都叫做一个节点(node),节点可以理解为 DOM 中所有 Object 的父类。

1180059-20170821175539683-1634554994.png

DOM节点常用属性

  • innerHTML属性: 获取元素的内容,包括元素里面的HTML标签
  • nodeName属性: 节点的名称(nodeName是只读的,nodeName始终包含HTML元素的大写字母标签名)
    • 元素节点的nodeName与标签名相同
    • 属性节点的nodeName与属性名相同
    • 文本节点的nodeName始终是#text
    • 文档节点的nodeName始终是#document
  • nodeValue属性:节点的值
    • 元素节点的nodeValue是undefined或null
    • 文本节点的nodeValue是文本本身
    • 属性节点的nodeValue是属性值
  • nodeType属性: 节点的类型
    • 元素节点
    • 文本节点
    • 属性节点
    • 注释节点
    • 文档

详细例子参见W3school

Dom 操作

由上图可知Docment为根节点,对于使用iframe嵌入网页来说,Document可以有很多个。通过Docment访问其任何子节点,以此进行增删改查元素的内容、样式、响应事件等等实现更改网页的交互方式。以下为一些常见操作:

  • 找到节点
    • document.getElementById("id")
    • document.getElementsByTagName("name")
    • document.getElementsByClassName("name")
      • 访问类的时候,返回的是一个数组,当把它传给变量var y的时候,在使用这个节点时,使用y[0]。
  • 改变节点
    • object.innerHTML = new html content
    • object.atrribute = new value
    • object.setAtrribute(attribute, value)
    • Object.style.property = new style
  • 增删节点
    • document.creatElement(element)
    • document.removeChild(element)
    • document.appendChild(element)
    • document.replaceChild(element)
    • document.write(text)
  • 绑定事件
    • document.getById("id").onclick = function () {code block}

更多方法操作见w3school

JavaScript不能真正改变DOM,仅仅是改变呈现内容,当页面刷新的时候统统会还原,但是我们可以把这些改变提交给服务器,通过后端语言(如PHP)来改变底层数据。
对于用户的一般互动如弹窗等不需要服务器参与,只需JavaScript操作DOM响应反馈即可。

BOM

BOM(Browser Object Model ),通过这个接口允许JavaScript控制浏览器的行为
下图中A、B、C、D均为BOM操作的对象
1180059-20170821224726933-1611857878.png

其中window是浏览器一个对象

  • 打开新窗口
    • window.open( [URL], [窗口名称], [参数字符串] )
  • 关闭窗口
    • window.close( )
    • .close( )

实例应用

1180059-20170821231646636-1340465770.png
完成的功能为:用户可以在输入框中输入任何内容,点击“确认填写”按钮后,用户输入的内容会显示在“您输入的值是”文字的右边

  • 点我预览

扩展阅读

  • JS中innerHTML、outerHTML、innerText 、outerText、value的区别与联系?jQuery中的text()、html()和val() ?
  • 关于 DOM 事件使用的摘记
  • JavaScript、jQuery、AJAX、JSON 这四个之间的关系?

参考资料

  • DOM 是什么?
  • DOM, DOCUMENT, BOM, WINDOW 有什么区别?

转载于:https://www.cnblogs.com/jecyu/p/7399072.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea中使用osgi_OSGi环境中的Servlet基本身份验证

idea中使用osgi您首先需要获得对OSGI HTTP Service的引用。 您可以通过声明性服务来做到这一点。 这篇文章将集中在获得对HTTP服务的引用之后的步骤。 注意&#xff1a;此职位的完整课程位于此处 通过OSGI HTTP Service注册Servlet时&#xff0c;它为您提供了提供HTTPContext实…

java spring aop 注解包_Spring AOP 注解配置实例

Spring AOP注解例子一&#xff1a;导入相关jar包。首先导入Spring的相关包(这里就不多说了&#xff0c;我这里是3.2.4版本的)然后导入AOP注解的相关包(不是spring的包)aspectjrt-1.6.7.jar和aspectjweaver-1.6.8.jar和aopalliance.jar(注意这里最好是1.6.7以上的版本&#xff0…

email

163邮件发送 private void SendEmail(string content){SmtpClient mSmtpClient new SmtpClient();mSmtpClient.Host "smtp.163.com";mSmtpClient.Port 25;mSmtpClient.UseDefaultCredentials true;mSmtpClient.EnableSsl false;var mSenderUsername "abc&q…

java web 有哪些标签库_java web中jsp常用标签

在jsp页面开发过程中&#xff0c;经常需要使用JSTL(Java Server Pages Standard Tag Library)标签开开发页面&#xff0c;是看起来更加的规整舒服。JSTL主要提供了5大类标签库:1. 核心标签库: 为日常任务提供通用支持,如显示和设置变量,重复使用一组项目,测试条件以及其他操作(…

微服务有麻烦吗? Lagom在这里为您提供帮助。 尝试一下!

蛋糕支持。 我们很自豪地宣布&#xff0c;新的Apache许可的微服务框架Lagom可在GitHub上使用 &#xff01; 当其他框架专注于打包和实例启动时&#xff0c;Lagom重新定义了Java开发人员构建基于微服务的应用程序的方式。 服务是异步的。 服务内通信由您管理。 流是开箱即用的。…

vue element-ui IE9--11报 “无法获取未定义或null引用的属性‘toLowerCase’”

今天做zymh比赛的一个管理后台&#xff0c;用的技术是vueelement-uivue-routeraxios&#xff0c;其他浏览器运行的很好&#xff0c;但是在IE&#xff08;从IE11到IE9&#xff0c;vue支持IE9以上&#xff09;都报错 点进去就是定位到了markUp这个函数&#xff0c;经查询是elemen…

执行力

什么是执行力&#xff1f; 员工执行力就是员工能够按质按量、一丝不苟地做好上级交待的工作&#xff0c;衡量的基本标准是提供了上级&#xff08;客户或公司&#xff09;满意的结果。 那种不能创造价值&#xff0c;不能提供结果的&#xff0c;不是真正的执行力&#xff0c;只是…

接口中的默认方法和静态方法

在我们最初的Java 8支持公告中&#xff0c;我们特别提到了缺少流&#xff0c;但是完全错过了默认/静态本机接口不起作用的事实。 现在&#xff0c;由于有一个警惕的社区成员指出了这一问题&#xff0c;因此此问题已得到解决。 由于限制需要全新构建才能使它们正常工作&#xf…

海思芯片硬件java加速_海思芯片直播延迟测试结果(小于100毫秒)

背景最近接触了许多客户&#xff0c;许多是做安全方面产品的客户&#xff0c;有些还涉及到jun队后勤的等等&#xff0c;他们普遍对采集延迟&#xff0c;编码延迟&#xff0c;传输延迟等都有很大关注。例如有个客户是做反狙击探测的&#xff0c;那可是与生命相关的&#xff0c;容…

for 循环练习题

X3 * 6528 3X * 8256X为一个数字 填入一个数字 使等式成立 for (var x1;x<9&&x>0;x) { if ((x*103)*6528(3*10x)*8256) { break; } }document.write(x); 第二题&#xff1a;在页面上输出以下图形 * *** ***** ******* ********* 第一种&#xff1a; …

java jsp登录的验证码_Java Web实现登录验证码(Servlet+jsp)

1.生成验证码图片(Servlet)importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics2D;importjava.awt.image.BufferedImage;importjava.io.IOException;importjava.util.Random;importjavax.imageio.ImageIO;importjavax.servlet.ServletException;importjavax.ser…

shrinkwrap_Java EE 6测试第二部分– Arquillian和ShrinkWrap简介

shrinkwrap在Java EE 6测试的第一部分中&#xff0c;我简要介绍了使用Glassfish嵌入式容器的EJB 3.1 Embeddable API&#xff0c;以演示如何启动该容器&#xff0c;如何在项目类路径中查找bean以及运行非常简单的集成测试。 这篇文章重点介绍Arquillian和ShrinkWrap以及为什么它…

android UI

A015-布局之LinearLayout good 巫山老妖 Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载) Android&#xff1a;控件GridView的使用 Android:将View的内容映射成Bitmap转图片导出 android中恶心的getDrawingCache Android XML shape 标…

java中三个基本框架_对于Java基础者应该如何理解Java中的三大框架!

三大框架&#xff1a;StrutsHibernateSpringJava三大框架主要用来做WEN应用。Struts主要负责表示层的显示Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作)Hibernate主要是数据持久化到数据库再用jsp的servlet做网页开发的时候有个 web.xml的映射文件&#xff0c;里面…

关于JS中的 NEW 和VAR

很多人都觉得在javascript声明一个变量&#xff0c;加var和不加var没有什么区别&#xff0c;实际上是一个错误的观点&#xff0c;如果在函数外面&#xff0c;也就是说在window区域加不加var确实是一样&#xff0c;因为都会是全局变量的效果&#xff0c;而如果在函数内部&#x…

Apache Camel的性能调整思路

时不时地&#xff0c;我会以Camel速度较慢的说法来询问有关优化Camel应用程序的问题。 骆驼只是连接不同系统的粘合剂&#xff0c;路由引擎全都在内存中&#xff0c;并且不需要任何持久状态。 因此&#xff0c;在99&#xff05;的情况下&#xff0c;性能问题是由于其他系统的瓶…

常州模拟赛d4t1 立方体

题目描述 立方体有 6 个面&#xff0c;每个面上有一只奶牛&#xff0c;每只奶牛都有一些干草。为了训练奶牛的合作精神&#xff0c;它 们在玩一个游戏&#xff0c;每轮&#xff1a;所有奶牛将自己的干草分成 4 等份&#xff0c;分给相邻的 4 个面上的奶牛。 游戏开始&#xff0…

salt java 日志 乱码_Saltstack执行cmd.run重启tomcat后出现日志乱码(15)

Saltstack使用的cmd.run调用的是核心模块cmdmod.py&#xff0c;下面我们来看一下cmdmod.py模块的源码&#xff1a;cat /usr/lib/python2.6/site-packages/salt/modules/cmdmod.py......if reset_system_locale is True:if not salt.utils.is_windows():# Default to C!# Salt o…

再见c罗再见梅西_再见,再见,5 * 60 * 1000 //五分钟,再见,再见

再见c罗再见梅西在这篇文章中&#xff0c;我将讨论一个在1.5版中首次引入的类&#xff0c;我使用了太多&#xff0c;但是与一些人交谈&#xff0c;他们说他们不知道它的存在。 此类是TimeUnit 。 TimeUnit类表示给定粒度单位的持续时间&#xff0c;还提供了转换为不同单位的实用…

RxSwift 系列(一)

为什么使用RxSwift? 我们编写的代码绝大多数都涉及对外部事件的响应。当用户点击操作时&#xff0c;我们需要编写一个IBAction事件来响应。我们需要观察通知&#xff0c;以检测键盘何时改变位置。当网络请求响应数据时&#xff0c;我们必须提供闭包来执行。我们使用KVO来检测变…