html前端复习题二

77 阅读19分钟

HTML的基本结构

1.页面的三要素

页面的结构 HTML

页面的样式 CSS

页面的行为 JS

2.HTML的基本结构

2.1 最简单的HTML文件

以下是一个最简单的HTLML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
</body>
</html>

2.2 结构说明

对其中的各个结构做说明

(1) 文档头声明

文档头声明, 也叫文档类型声明

代码⌨️

<!DOCTYPE html>

注意⚠️

  • 文档头类型的英文缩写非常好记: DOC + TYPE (document + type)
  • 不是标签
  • html 代指 以 HTML5 的标准来解析当前页面
  • 文档头类型声明一般会放在文档最开始的位置,浏览器的解析方式从上至下,从左至右
(2) <html>标签

HTML的根元素

代码⌨️

<html></html>

注意⚠️

  • HTML的根元素
  • 除了文档头声明,其他所有内容都应当放在 HTML 的根元素当中
(3) <head>标签

HTML的头部

代码⌨️

<head></head>

注意⚠️

  • head 当中绝大部分内容都是不可见的
  • head 当中主要是用于辅助
(4) <title>标签

设置页面的标题

代码

<title></title>
(5) <meta>标签

定义页面的元数据,元数据本身没有任何含义,它的含义是根据后面的属性来决定的

代码

<head>
<meta name="description" content="我的第一个页面">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="LinDaiDai">
<meta charset="UTF-8">
</head>

例如属性charset: 规定 HTML 文档的字符编码

<meta charset="UTF-8">

表示以UTF-8的字符编码进行解析

注意⚠️

  • <meta>标签通常位于<head>区域内
  • 元数据通常以 名称/值 对出现
  • 如果没有提供 name 属性,那么名称/值对中的名称会采用 http-equiv 属性的值

实例

实例 1 - 定义文档关键词,用于搜索引擎:

<meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript">

实例 2 - 定义web页面描述:

<meta name="description" content="Free Web tutorials on HTML and CSS">

实例 3 - 定义页面作者:

<meta name="author" content="Hege Refsnes">

实例 4 - 每30秒刷新页面:

<meta http-equiv="refresh" content="30">
(6) <body>标签

HTML的身体, 用于向页面中展示内容

代码⌨️

<body></body>

注意⚠️

  • <body>标签定义文档的主体
  • <body>标签包含文档的所有内容(比如文本、超链接、图像、表格和列表等等)

3.HTML的发展史

HTML(第一版)

• 1993年6月,互联网工程工作小组发布 HTML 工作草案

• 2.0

• 1995年11月作为 RFC 1866发布

• 3.2

• 1996年1月14日由 W3C 发布,是 HTML 文档第一个被广泛使用的标准

• 4.0

• 1997年12月18日有 W3C 组织发布,也是 W3C 推荐标准

• 4.01

• 1999年12月24日由 W3C 组织发布,是 HTML 文档另一个重要的,广泛使用的标准

• XHTML 1.0

• 发布于2000年1月26日,是 W3C组织 的推荐标准,后来经过修订于2002年8月1日才重新发布

• 拓展的超文本标记语言

• 更严格,更纯净的 HTML 代码

• 为什么要被设计出来?

• HTML 已经发展到一种极度混乱的程度

• W3C制定了 XHTML ,它的目的是取代 HTML

• 例子:找一段非常混乱的代码

• 代码规范

• 但是后来失败了,没有人喜欢约束

• “存在即是合理”

• WHATWG 开始制定一种“妥协式”的

• web applications 1.0

• 2008年 W3C 认可 该草案

• html5

• 优势

• 解决跨浏览器的问题

• 部分替代了原来的 JS

• 更明确的语义支持

• 增强了 WEB 应用程序的功能

4.注释:

4.1 注释的作用

解释和说明

给开发者看(给人看的)

4.2 HTML 部分的注释:

<!-- 需要注释的内容-->

<!--第一行
第二行-->

4.3 注释的快捷键

ctrl + /

5.标记以及标签 :

5.1 标记

单标记:<>

如:

<img>

双标记 <> </>

如:

<div></div>

5.2 标签

将特定的英语单词放入我们的标记中,这样我们的标记就有了特殊的含义,这时候,我们将有含义的标记称之为“标签”。

1.块元素标签

div

双标签 语义: 无意义;

h1~h6

双标签 语义:一级标题至六级标题;

默认样式: margin-top 和 margin-bottom;

p

双标签 语义: 段落;

默认样式:

margin-top:16px;
margin-bottom:16px;

blockquote

双标签 语义: 定义长段的引用;

默认样式:

margin-top:16px;
margin-bottom:16px;
margin-left :40px;
margin-right:40px;

address

双标签 语义: 定义地址

默认样式:

font-style: italic;

ul >li

双标签 语义: 定义无序列表;

默认样式:

margin-top16px;
margin-bottom:16px;
padding-left:40px;

ol >li

双标签 语义: 定义有序列表;

默认样式:

margin-top16px;
margin-bottom:16px;
padding-left:40px;

dl >dd 和 dt 双标签 语义:

dl: 语义: 定义段落

默认样式:

margin-top16px;
margin-bottom:16px;

dt 语义 : 定义标题列表项;

默认样式: none ;

dd: 语义: 定义普通列表项

dd: 是针对dt的解释和说明

默认样式:

margin-left40px;

::: tip 块元素的特性:

1.块元素 默认独占一行;

2.块元素 如果没有设置宽度,默认继承父级的宽度

3.块元素可以正常的显示margin 和 padding

4.块元素 可以设置宽度和高度;

:::

2.内联元素标签

span

双标签 语义 ; 无意义

一般使用span来设置某些文字或局部内容的样式;

em

双标签 语义: 强调语气

显示方式; 斜体

strong

双标签 语义: 重要的文本

语气强烈程度高于<em>

显示方式; 粗体 ;

a

双标签 语义: 超链接

1.属性href

href=" ": 指定超链接所关联的另一个资源的地址;

作用1:用于和网络上的另一个资源"保持关联";

  • 绝对路径

https://www.baidu.com

https/http: 超文本传输协议;

  • 相对路径

img/1.jpg

  • 物理路径:

file://

作用2:锚点

(例1)

点击"回到标记处" 回到锚点处 只能作用于id

<a href="#maodian1">
<a href="#maodian2">

<div id="maodian1">
<div id="maodian2">

点击第一个a标签, 页面则跳到idmaodiao的标签处

(例2)

<a href="#" ></a>
  • 地址栏链接污染 会在地址栏的最末尾加上#
  • 会造成点击后刷新网页

(例3)

<a href="###" ></a>
  • 地址栏链接污染 会在地址栏的最末尾加上###
  • 不会造成点击后刷新网页

(例4)

 <a href="javascript:void(0);" ></a>
  • 地址栏链接不会污染
  • 不会造成点击后刷新网页
  • 会使浏览器默认记录内容是否被点击过的功能失效

2.属性target

target="":指定使用哪种框架去装载新资源

属性值:

  • _self 当前网页进行加载;
  • _blank 新建页面进行加载;

<a href="https://www.baidu.com" target="_blank">打开百度</a>

表示点击这个 a标签,则已一个新窗口打开百度首页

q

双标签

语义: 定义短 的引用

浏览器一般以双引号的方式来显示该内容

cite

双标签

语义: 定义作品的名称 浏览器一般会以斜体的方式来显示该内容

code

双标签

定义一段计算机代码

pre

双标签

语义: 预文本格式化内容

::: tip 内联元素的特征:

内联元素默认会在一行显示,直至一行放不下时才会另起一行;

内联元素空格和回车会被解析;

内联元素不支持设置宽度和高度; "的;(是由内容来"撑开设置float:left就可以设置宽高)

内联元素无法正常的显示margin 和 padding ;(设置float:left就可以设置宽高)

:::

3.内联块元素标签

img

单标签

语义 定义图片

属性

  • src 指定"图片资源文件"所在的地址
  • alt 指定图片无法正常加载时所提供的用户信息,便于 SEO (搜索引擎) 搜索

注意⚠️

会有小间隙 解决

width:100%; 
height:100%;

::: tip 内联块元素的特征:

1.可以设置宽高

2.可以放在同一行显示

3.代码换行也会被解析

:::

元素与元素之间会有空白 : 原因 内联元素空格和回车会被解析

解决:

  1. 手动把回车空格去掉
  2. 把父级的font-size:0;

5.3 写标签的简便方法

设置3个div :

div*3 + tab
<div></div>
<div></div>
<div></div>

设置一个div 内 有三个子div:

div>div*3 + tab
<div>
	<div></div>
	<div></div>
	<div></div>
</div>

设置一个div内有 一个子div 和一个 p 标签:

 div>p+div + tab
<div>
	<p></p>
	<div></div>
</div>

给div 设置一个类名:

 .wrap +tab
<div class="wrap"></div>

给 p 设置一个类名 :

 p.p1 +tab
<p class="p1"></p>

给一个div 内设置俩个子div 并分别 加上 类名:

 .father>.son1+.son2 +tab
    <div class="father">
        <div class="son1"></div>
        <div class="son2"></div>
    </div>

设置三个内容相同的div:

 div{我是 div }*3 +tab
    <div>我是 div </div>
    <div>我是 div </div>
    <div>我是 div </div>

设置三个内容依次递增的div :

div{我是世界第 $ 帅}*3 +tab
    <div>我是世界第1帅</div>
    <div>我是世界第2帅</div>
    <div>我是世界第3帅</div>

设置三个类名依次递增的div:

 .div_$*3 +tab
    <div class="div_1"></div>
    <div class="div_2"></div>
    <div class="div_3"></div>

设置三个ID名依次递增的div:

 #div_$*3 +tab
    <div id="div_1"></div>
    <div id="div_2"></div>
    <div id="div_3"></div>

设置3个href为javascript:; 内容为 百度 的a标签

 a[href=javascript:;]{百度}*3 +tab
    <a href="javascript:;">百度</a>
    <a href="javascript:;">百度</a>
    <a href="javascript:;">百度</a>

6.标签类型之间的转换

在css中使用display属性来进行标签与标签之间的转换

display: 修改当前标签的类型

常用的属性值有:

  1. block 块元素;
  2. inline 内联元素:
  3. inline-block 内联块元素;
  4. none 让当前元素完全消失 在布局当中不在占有位置;

7.标签之间的嵌套

1.块元素

div 里面可以套p 、 p 不能嵌套 div

如以下做法是可以的:

<div>
	<p>我是p表签</p>
</div>

以下做法是错误的:

<p>
	<div></div>
</p>

h1 ~ h6、 dt 同样不能嵌套其他块元素

2.内联元素

超链接当中不能嵌套超链接;

如以下做法是错误的:

<a>
	<a></a>
</a>

8.HTML的加载顺序

谨记两点:

从上至下 从左至右

后加载的内容会覆盖前面加载的内容

9.前端规范

1、所有书写均在英⽂文半⻆角状态下的⼩小写;

2、id,class必须以字⺟母开头;标签的命名必须以字母、下滑线、$作为开头

3、所有标签必须闭合;

4、html标签用tab键缩进;

5、属性值必须带双引号;

6、<!-- html注释 -->

7、/* css注释 */

8、ul,li/ol,li/dl,dt,dd拥有⽗父⼦子级关系的标签;

9、p,dt,h标签 ⾥面不能嵌套块属性标签;

10、a标签不能嵌套a;

11、内联标签不能嵌套块标签;

10.对seo有意义的标签

1.页面的标题title 标签

<title>页面标题</title>

2.页面的关键字

<meta name="keywords" content="HTML5" />

3.页面的描述

<meta name="description" content="LinDaiDai"/>

4.h1标签和h2标签

<h1></h1>
<h2></h2>

5.重要的文本strong标签

<strong></strong>

6.图片img标签的alt属性

<img src="img/img1.png" alt="我是图片1" />

7.友情链接

经常看到网页最下面的友情链接

w3c的官网下面:

基本的表单标签

1. form

双标签

语义:定义表单

代码⌨️

<form action="form_action.asp" method="get">
  <p>First name: <input type="text" name="fname" /></p>
  <p>Last name: <input type="text" name="lname" /></p>
  <input type="submit" value="Submit" />
</form>

1.1 属性

1. action

作用:表单需要提交的地址,向何处发送表单数据

代码⌨️

<form action="URL">

URL为表单提交的地址,可能的值有:

  • 绝对 URL - 指向其他站点(比如 src="www.example.com/example.htm")
  • 相对 URL - 指向站点内的文件(比如 src="example.htm")
2. method

作用:表单提交的方式

代码⌨️

<form action="example.htm" method="get">
  <p>First name: <input type="text" name="fname" /></p>
  <p>Last name: <input type="text" name="lname" /></p>
  <input type="submit" value="Submit" />
</form>

可能的值有:

  • get 也是默认值,一般用于从服务器上获取数据,安全性上不如post
  • post 一般用于向服务器传送数据

2. input

单标签

语意: 输入型表单控件

代码⌨️

<input type="submit" value="Submit" />

2.1 属性

1. type

作用:规定input元素的类型

代码⌨️

<input type="submit" />

可能的值:

1.text 文本输入框,默认值

属性✍️

placeholder 文本框提示语

maxlength 文本可输入最大长度

<input type="text" placeholder="请输入" maxlength="20" />

2.password 密文输入框

也是一个文本输入框,与它的区别是密文输入框内输入的内容是不可见的,会被显示为一个个小黑点.

属性✍️

placeholder 文本框提示语

maxlength 文本可输入最大长度

3.radio 单选框

相同类型的单选框,name 属性需要相同

属性✍️

name 设置radio的名称

value 属性值

disabled 是否禁用 设置了这个属性之后单选框为禁用状态

checked 单选框的默认选项 checked="checked"

<input type="radio" name="sex" value="man"/><input type="radio" name="sex" value="girl"/>女
​
<!--默认为男-->
<input type="radio" name="sex" checked="checked"/><input type="radio" name="sex"/>女
​
<!--直接写checked也是和上面等效的-->
<input type="radio" name="sex" checked/><input type="radio" name="sex"/>女
​
<!--禁用状态-->
<input type="radio" name="sex" disabled/><input type="radio" name="sex"/>

4.checkbox 复选框

属性✍️

name 设置checkbox的名称

value 属性值

disabled 是否禁用 设置了这个属性之后多选框为禁用状态

checked 复选框的默认选项 checked="checked"

<input type="checkbox" name="hobby" value="eat" checked/>吃饭
<input type="checkbox" name="hobby" value="sleep"/>睡觉
<input type="checkbox" name="hobby" value="swim"/>洗澡
<input type="checkbox" name="hobby" value="programme"/>编程

5.hidden 隐藏

这种类型的输入元素实际上是隐藏的。

这个不可见的表单元素的 value 属性保存了一个要提交给 Web 服务器的任意字符串。

如果想要提交并非用户直接输入的数据的话,就是用这种类型的元素。

属性✍️

name 设置或返回隐藏域的名称

value 设置或返回隐藏域的 value 属性的值

<input type="hidden" name="height" value="100"/>

6.button 表单的普通按钮

属性✍️

value 按钮上显示的字

disabled 是否禁用按钮

<input type="button" value="点击">

7.submit 表单的提交按钮

属性✍️

value 按钮上显示的字

name 设置或返回submit的名称

disabled 是否禁用按钮

与button的区别

  • <input type="button" /> 这就是一个按钮,如果你不写javascript 的话,按下去什么也不会发生
  • <input type="submit" /> 这样的按钮用户点击之后会自动提交 form,除非你写了javascript 阻止它
  • <button></button>这个按钮放在 form 中也会点击自动提交,比前两个的优点是按钮的内容不光可以有文字,还可以有图片等多媒体内容.(当然,前两个用图片背景也可以做到).它的缺点是不同的浏览器得到的 value 值不同;可能还有其他的浏览器兼容问题

8.reset 重置按钮

属性✍️

value 按钮上显示的字,默认值为“重置“

name 设置或返回重置按钮的名称

disabled 是否禁用按钮

2. name

作用:定义 input 元素的名称 (键值对:名称 = 数值 ,KEY = VALUE)

代码⌨️

<input name="firstName" />
3. value

作用: input输入内容的值

代码⌨️

<input type="submit" value="Submit" />

3. select

下拉菜单

双标签

内部需要使用option 来作为菜单的列表项

name设置给select , option 设置 value

可以通过设置selected 属性来设置默认首选项

<select name="wd">
	<option value="选项1">选项1</option>
   	<option value="选项1">选项1</option>
</select>

4. textarea

文本输入域

单标签

CSS属性

resize 设置文本框是否可拉伸,设置为 "none" 则不可以

textarea {
    resize: none;
}

属性✍️

name 设置并返回textarea的名称

value 设置或返回在 textarea 中的文本

placeholder 文本框提示语

maxlength 文本可输入最大长度

cols 文本框的宽度

rows 文本框的高度

disabled 是否被禁用

<textarea cols="3" rows="10" maxlength="20" placeholder="请输入"></textarea>

DOM基础

第一章:DOM概述

1.1DOM以及节点概念

文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。

DOM 将HTML文档呈现为带有元素、属性和文本的树结构(节点树)。
​
![img1](https://github.com/LinDaiDai/JavaScript/blob/master/DomImg/img1.png?raw=trueE:\JavaScript\DomImg\img1.png)
​
**HTML**文档可以说由节点构成的集合,DOM节点有:
  1. 元素节点:上图中、、

    等都是元素节点,即标签。

     

  2. 文本节点:向用户展示的内容,如

  3. ...
  4. 中的JavaScript、DOM、CSS等文本,即标签内部的纯文本.

     

  5. 属性节点:元素属性,如标签的链接属性href="www.imooc.com",即标签的属性.

document节点是每个文档的根节点

document节点下面只有一个 html节点,我们称之为文档元素

(documentElement)文档元素是文档的最外层元素,其他元素都包含在文档元素中。

一个文档只能有一个文档元素,在html中文档元素永远是 <html>元素。

在DOM树中,html文档中每一处标记都可以用树中的一个节点来表示。

html(元素)标签,通过元素节点表示属性,通过属性节点来表示文档类型,通过文档类型节点来表示注释,通过注释类型来表示

1.2节点的属性(特性)

每一个节点都有三个特点:

1.nodeName      节点名称(只读)    
​
2.nodeValue     节点值(设置或返回节点的值)     
​
3.nodeType      节点类型

1.nodeName:节点名称(nodeName 始终包含 HTML 元素的大写字母标签名) nodeName 是只读的

2.元素节点的 nodeName 与标签名相同

3.属性节点的 nodeName 与属性名相同(元素.getAttributeNode(“属性名”)获取属性节点)4.文本节点的 nodeName 始终是 #text(通过元素的子节点获取)

5.注释节点的nodeName是#comment(通过元素的子节点获取)

6.文档节点的 nodeName 始终是 #document

7.nodeValue:节点值 (设置或返回节点的值)

8.元素节点的 nodeValue 是 undefined 或 null

9.属性节点的 nodeValue 是属性值

10.文本节点的 nodeValue 是文本本身

11.注释节点的nodeValue是注释里面的内容

12.文档节点的nodeValue 是null

13.nodeType:节点类型

14.元素 element 1

15.属性 attr 2

16.文本 text 3

17.注释 comments 8

18.文档 document 9

例:

<body>
<p id = "p" class = "abc">您好</p>
<script>
    var p = document.getElementById('p');
    p.nodeName      P
    p.nodeValue     null
    p.nodeType     1     元素节点
    var text = p.firstChild;
    text.nodeName     #text
    text.nodeValue     您好
    text.nodeType     3     文本节点
    var attrNode = p.getAttributeNode("id");
    attrNode.nodeName     id
    attrNode.nodeValue     p
    attrNode.nodeType     2     属性节点
 </script>
 </body>

第二章:document对象

2.1获取节点

1.getElementById('id名')
根据元素的id名来获取节点
​
**IE5以下不兼容**
2.getElementsByTagName('标签名')
根据元素的标签名来获取节点.一个文档中可能会存在很多相同的标签名,因此用此方法获取到的是多个element组成的集合
3.getElementsByName('name')
根据标签的name属性来获取节点,返回的也是多个element组成的集合;
​
**注:**不是所有标签都有name属性,只有 **表达标签** 才有name属性(切某些低版浏览器不支持)
4.querySelector('css选择器')
参数:指定一个或多个匹配元素的css选择器.可以用id, 类, 类型,属性,属性值等来选取元素.

对于多个选择器,使用逗号隔开,返回一个匹配的元素,

返回值:匹配指定css选择器的第一个元素, 若没找到,返回null.

document.querySelector 获取第一个

var p = document.querySelector("#box > p"); //box 这个 id 下的 p标签

console.log(p);

=>

abc

5.querySelectorAll('css选择器')
获取满足选择器里的所有标签
6.documentElement(元素)

documentElement 属性以一个元素对象返回一个文档的文档元素。HTML 文档返回对象为 HTML元素

<body>
    <script type="text/javascript">
        alert(document.documentElement.nodeName);    // html
        alert(document.documentElement.nodeValue);    // null
        alert(document.documentElement.nodeType);    // 1
    </script>
</body>

2.2 Node关系 获取操作

1.节点与节点之间的关系

父(parent)节点 父节点拥有任意数量的子节点

子(child)节点 子节点拥有一个父节点

兄弟(sibling)节点 同级的子节点被称为同胞(兄弟或姐妹)。

同胞是拥有相同父节点的节点根 (root) 节点

一个文档只能有一个根节点。

对html文档来说,根节点就是documentElement。

根节点不可能有父节点

2.获取操作
var div = document.querySelector("div");
var allNodes = div.childNodes;          //childNodes会把所有类型节点都获取到,包裹元素节点,文本节点(空格换行符等),属性节点;

但主要是为了获取元素节点(nodeType为1)
方法1:
for( var c in allNode){
if( c.nodeType ==1){
document.write(c)
}
}
方法2:
var allNodes = div.children;          //div的所有子节点(只有元素节点,不包裹文本等其他节点)
var count = div.childElementCount;     //div的所有子节点的个数 ,也可以之间用 allNodes.length;
var firstChild = div.firstElementChild;     //div的第一个元素节点
var lastChild = div.lastElementChild;          //div的最后一个元素节点
var secondChild = div.firstElementChild.nextElementSibling;     //div的第二个元素节点
var lastSecondChild = div.lastElementChild.previousElementSibling;     //div的倒数第二个元素节点
div == div.firstElementChild.parentNode;                              //div的第一个元素节点的父节点就是div本身
注:若把 children 换为childNodes 以及把后面全部的Element去掉,则会选取所有类型的节点
3.创建修改操作
3.1 createTextNode( )
	创建文本节点

`var text = document.createTextNode("这个是文本节点");`
3.2 createElement( )
	创建元素节点	

	可以是 div  p   span  ul  li 等

`var ele = document.createElement("div");`
3.3 appendChild( )
给一个元素追加child节点

`document.body.appendChild(ele); //添加到body的最后一个子节点之后; `
3.4 insertBefore( )
fatherNode.insertBefore(newNode, existingNode);

参数:	1.要插入的节点	2.目标节点

在一个节点前插入一个节点

将一个新创建的元素插入到某个元素之前

 如:在ul中,有3个li ,要将新创建的一个li 插入到第一位,
      ul.insertBefore(li,ul.firstElementChild);
    将li 插入到最后一位:
      1.ul.appendChild(li);
      2.ul.insertBefore(li,null/undefined);
3.5 removeChild( )
移除子节点

fatherNode.removeChild(node)
3.6 replaceChild( )
fatherNode.replaceChild(newNode,existingNode)

替换子节点
3.7 cloneNode( )
node.cloneNode(deep)

克隆节点

参数 deep 可以指定节点的精确克隆

	1.若不写参数,只拷贝当前的这个元素节点,不包过它的子节点

	2.参数为 **true** ,**它还将递归复制当前节点的所有子孙节点**.
4.元素属性操作
##### 4.1 getAttribute( ):获取属性值
<ul id = "abc" class = "one">
如 获取 ul 的 id 
     console.log(ul.getAttribute("id"));
 => abc
##### 4.2 setAttribute( ):

添加或设置属性值

      1.如将 ul 的 id 名更换  
          div.setAttribute("id" , "box")
          ul 的 id 变为 box 
      2.将 ul 的class 再添加俩个类名
           div.setAttribute("class" , div.getAttribute("class") + " two");
##### 4.3 removeAttribute( )

*element*.removeAttribute(*attributename*)

参数:必需。规定要删除的属性的名称

*例:* 一个可以转换形态的按钮

<body>  
<input id="input1" type="button" value="点我可以转换我的状态" onclick="myFunction();">
<script>
    function myFunction() {            
        var input1 = document.getElementById("input1");
        var typeValue = input1.getAttribute("type");
        if(typeValue){
            input1.removeAttribute("type");    //如果type属性有值就把这个属性去掉
        }else {
            input1.setAttribute("type", "button");    //如果type属性不存就添加属性。
        }
    };
</script>   
</body>
4.4 hasAttribute( )
element.hasAttribute(attributename)

参数:必须。判断指定的属性名是否存在。
5.元素节点的常用属性
5.1 基本属性
div.nodeName   所有节点都有

div.tagName     只针对元素节点

div.id           获取id

div.id = "abc"    增加/替换 id

div.className = "one"    增加/替换 class

checked 属性     表单标签特有的
5.2 innerHTML属性
innerHTML 属性设置或返回标签的开始和结束标签之间的 HTML。

值为为文本	

若要改变innerHTML(**要改变的值一定要放在.innerHTML之后**);
var num =5;  num="我是字符串";   num=true;
var span = document.getElementById('span').innerHTML=num;     正确写法
alert(typeof(span));     //num是什么属性或者赋值给它的是什么属性, span就是什么属性;
var span = document.getElementById('span').innerHTML;
span = num;                                                  错误写法
1.利用innerHTML 获取标签内的所有内容,返回一个字符串
alert(box.innerHTML); //获取这个元素节点里的文本(包含HTML标签),类型为string
正常浏览器显示:    <span>我是span</span>
IE                 <SPAN>我是span</SPAN>

2.利用innerHTML 设置一个字符串,会把字符串中的有效的标签解析出来.
  如,给div标签中添加一个内容是 "abc" 的p 标签
        var div = document.querySelector(div);
        div.innerHTML = "<p>abc</p>";
5.3 innerText属性
1.innerText值获取标签中的文本内容,子标签本身不会获取到。

2.去修改的时候,即使带有标签也会把标签作为纯文本来对待,而不会解析为标签

**注:和innerHTML不同,它并不会解析有效的标签,而是把它作为纯文本对待**
5.4 outerHTML
1.**读取值** 把包过标签自身和它里面的内容都获取到    

2.**设置值** 把标签用字符串来替换掉,如果字符串中有有效的标签,会被解析.

**注:和innerHTML不同,它可以读取包过标签自身**
5.5 value
	如果一个标签可以拥有value值,则可以可以通过element.value来获取。

	一般表单数据才具有vlaue:inputtextarea、select
5.6 获取元素的属性(offset)
**注:** 以下四个属性只能读取 不能对元素进行修改;

1.offsetWidth  	获取元素的实际宽度	包含borderpadding 在内

2.offsetHeight 	获取元素的实际高度	包含borderpadding 在内

3.offsetLeft 		元素定位之后相对于参照物父容器的偏移

4.offsetTop 		元素定位之后相对于参照物父容器的偏移
6.样式表的属性--css脚本化
6.1 获取和修改行内样式表
2种方式访问到行内样式:

	1.element.style.css属性名    

       2.element.style["css属性名"]
6.2 获取内部样式表和外部样式表
1.对于IE: 对象.currentStyle["属性名"]     

    2.其他浏览器: window.getComputedStyle(对象,null)["属性名"]
6.3 字符串模板

字符串${变量}

element.style.backgroundColor = `rgba(  
       ${randomInt(0,255)},
       ${randomInt(0,255)},
       ${randomInt(0,255)},
       ${Math.random()*0.+0.4}`;