JavaScript DOM编程艺术 读书笔记

3 篇文章 0 订阅
1 篇文章 0 订阅

JavaScript前言

JavaScript是一种高级编程语言

高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。 它是以人類的日常語言為基礎的一種編程語言,使用一般人易於接受的文字來表示,使程序編寫員編寫更容易,亦有較高的可讀性,以方便對電腦認知較淺的人亦可以大概明白其內容。—来自维基百科

通过解释执行,是一门动态类型,面向对象(基于原型)的直译语言

如果一个编程语言支持运行时期(动态)调度已标记的数据,该语言即为动态类型的。
—————
JavaScript定义类型时只需要定义var,无需另外指定image
把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)/泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派(dynamic dispatch)。(Milo Yip语)

特点:

1.交互性(它可以做的就是信息的动态交互)

2.安全性(它不允许直接访问本地硬盘)

3.跨平台性(只要是可以解释Js的浏览器都可以执行,和平台无关)。

JavaScript是由Sun公司和Netscape公司合作开发的

JScript是微软公司的标准

标准化后称之为ECMAScript

JavaScript和Java的区别

  • 1.JS前身是LiveScript,Java之前是Sun公司的产品,现在是Oracle公司的产品。
  • 2.JS是基于对象和事件的语言,Java是面向对象的语言
  • 3.JS是弱类型的语言,Java是强类型的语言(即前文的动态类型与静态类型的区别)
  • 4.JS的运行不需要编译就可以直接运行,Java需要编译为class字节码文件后才能运行

JavaScript语法

略过

DOM

Document Object Model文档对象模型

D文档

O对象:一种独立的数据结合

M

节点:
- 元素(标签)
- 文本(例如

标签间的文本)
- 属性(类似title)
- 层叠样式表

getElementById()方法

getElementByTagName()方法

上述两种方法都可以在document里面直接调用

getAttribute()需要通过Object.getAttribute("属性")这样调用(返回对象的属性

setAttribute()同上,它需要两个值,属性名和所赋予的值

JavaScript应用案例

分离css与js文件

将它们的置于标签的标签后

js是 <script src="xxx.js">

css是 <link herf="xxx.css">

本章应用的DOM属性有

childNodes 返回对象组

nodeType 返回类型 1 元素 2 属性 3 文本

nodeValue 检索和设置节点的值

firstChild 第一个子节点 同childNodes[0];

lastChild 最后一个子节点

良好的编程习惯

除了上述的分离css与js之外
多考虑浏览器不支持JavaScript之类的情况
或者默写dom属性无法调用的情况

预留后路

向后兼容性

window.onload = function () {
    if(!document.getElementById||!document.getElementByTagName) return false;
    //do something
}

结合良好的编程习惯及其他后对案例的改进

  • 1.设想在js功能被禁用的浏览器中运行的情况

  • 2.分离js代码

  • 3.不要做太多的假设(即 未验证的情况下使用一些变量

//这个js函数用于window.onload时加载多个function时使用

addLoadEvent(firstFunc);
addLoadEvent(secondFunc);

function addLoadEvent(func) {
    var oldonload = window.onload;
    if(typeof window.onload != 'function'){
        window.onload = func;
    }else{
        window.onload = function(){
            oldonload();
            func();
        }
    }
}

HTML—DOM提供了更简洁的记号来描述html元素的属性 例如

doucment.forms == document.getElementByTagName("form")

以及

element.src == element.getAttribute("src")

但其仅限于HTML中使用

DOM core 则可以在任何使用dom的地方使用

在完成本章节任务遇到了css样式中标签的问题 加入超链接的图片点击时 外层多了一个圈 显示为200*17的a标签

处理方式 将加入超链接的img 加入display: block;的样式

动态创建HTML

并不推荐使用的
document.write()
innerHTML// 适用于插入一大段HTML内容

DOM提供的方法

1

document.createElement(nodeName)
//例如
var para = document.createElement("p");
//创建一个p元素 并赋予变量para

2

parent.appendChild(child)
//用法
var testdiv = document.getElementById("testdiv");
var para = document.createElement("p");

testdiv.appendChild(para);

3

document.createTextNode(text)
//用法同创建元素节点

4

document.parentElement.appendNode(nodeName);
//将节点加到某个父节点上

5

parentElement.insertBefore(newElement,targetElement);
//将一个元素插入现有元素之前
//我们知道父元素到底是哪个,因为targetElement的parentNode

6

//自建了insertAfter函数
insertAfter(newElement,targetElement);
//shisi.js

充实文档内容

<abbr></abbr> 缩略语标签
<abbr title = “HyperText Markup Language">HTML</abbr>

HTML –> XHTML(符合XML规范的HTML)

后者更为严谨

后 暂略

CSS—DOM

三位一体的网页
- 结构层

由HTML和XHTML之类的标记语言负责创建 用标签对语义做出描述

- 表示层

由css负责创建

- 行为层

由JavaScript和DOM负责的领域 ”内容应该如何对事件做出反应“

动画效果

暂时略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值