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 的父类。

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操作的对象

其中window是浏览器一个对象

  • 打开新窗口

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

实例应用


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

扩展阅读

参考资料

JavaScript入门几个概念的更多相关文章

  1. javaScript入门2--基本概念

    语法: 1.区分大小写!! 2.标识符:既变量,函数名,属性名,参数. 1.第一个字符必须为字母,_,或者$ 2.其他字符可以是字母,_,&,或者数字 3.注释: 1.单行注释:// 2.多行 ...

  2. JavaScript入门笔记

    第一章 JavaScript语法 1.1 初识JavaScript 1.3 数据类型 1.4 string和boolean类型 1.5 算数操作符 第二章 JavaScript流程控制语句 2.1 循 ...

  3. Javascript高级程序设计——基本概念(一)

    一.语法 EMCA-262通过叫做ECMAScript的“伪语言”为我们描述了javascript实现的基本概念 javascript借鉴了C的语法,区分大小写,标示符以字母.下划线.或美元符号($) ...

  4. JavaScript入门篇 编程练习

    编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...

  5. JavaScript入门

    本篇内容是学习慕课网相关课程后,总结出可能未来会忘记的内容 (一)JavaScript入门操作 1.js代码插入位置,以及执行顺序 <head> <script type=" ...

  6. 慕课网JavaScript入门篇课程笔记

    1.js注释很重要 单行注释,在注释内容前加符号 “//”. <script type="text/javascript"> document.write(" ...

  7. JavaScript入门基础

    JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...

  8. JavaScript入门介绍(二)

    JavaScript入门介绍 [函数] 函数function 是Javascript的基础模块单元,用于代码的复用.信息影藏和组合调用. function a(){} 函数对象Function Lit ...

  9. JavaScript入门介绍(一)

    JavaScript入门介绍 [经常使用的调试工具][w3school.com.cn在线编辑] [Chrome浏览器 开发调试工具]按F121.代码后台输出调试:console.log("t ...

随机推荐

  1. SqlBulkCopy使用注意事项

    1. 有标识列的表 1.1 SqlBulkCopyOptions.KeepIdentity  必须设置!否则会出现复制过去的数据产生标识列发现变化的情况! 1.2 如果原表的标识列即为主键, 那按1. ...

  2. Android 系统特有的类介绍及使用

    1.Content类 在应用程序中Context的具体实现子类就是:Activity,Service,Application.可以把它理解成存储东西的仓库. 常用的上下文一般是类名.class或类名. ...

  3. vue 遇到的一个问题......

    当我用 @tap 或者 @click 触发 ajax事件时,返回的结果会非常慢--- 我也不清楚为啥会这样....(仅仅在chrome下会这样--- 所以 我用 touchend 方法替代了 该方法. ...

  4. LeetCode15. 三数之和

    15. 三数之和 描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中 ...

  5. 格子刷油漆(dp)-----------蓝桥备战系列

    标题:格子刷油漆 X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如图1所示),现需要把这些格子刷上保护漆. 你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但 ...

  6. 文件对象FSO应用 文件对象FSO应用

    FileSystemObject对象被用来访问服务器上的文件系统.这个对象能够处理文件.文件夹和目录路径.用它来检索文件系统信息也是可能的. 下面的代码创建了一个文本文件,并写入了一些文本: dim ...

  7. PHP报错

    php.ini ; 错误日志 log_errors = On ; 显示错误 display_errors = Off ; 日志路径 error_log = "/usr/local/lnmp/ ...

  8. mysql--外键(froeign key)-----------MySQL外键使用详解

    如果一个实体的某个字段指向另一个实体的主键,就称为外键被指向的实体,称之为主实体(主表),也叫父实体(父表).负责指向的实体,称之为从实体(从表),也叫子实体(子表) 作用:用于约束处于关系内的实体增 ...

  9. 二分函数 lower_bound()

    这篇博客说是STL源码.... https://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html 头文件 algorithm 1.lowe ...

  10. 克隆kvm虚拟机报错ImportError: No module named 'requests.packages.urllib3'

    2018-06-21 更新系统造成kvm克隆命令报错 virt-clone -o centos--update-clone -n centos--maven-test -f /var/lib/vmdk ...