html容易忽略的基础知识

一、HTML标签

关闭标签(标签一定要有结束):<h1></h1> <br /> <hr />

二、HTML标题

标题标签:<h1> ~ <h6>

  • 仅用于标题,不可用于文本的粗体或大号设置
  • 搜索引擎使用标题为网页的结构和内容编制索引。
  • h1最重要 h2其次 h3再次,以此类推

三、HTML段落

 <p>我是一个段落</p>
  • 块级元素,浏览器自动在段落的前后添加空行
  • 不要用<p></p>插入空行,用<br/>代替
  • 浏览器会移除源代码中多余的空格和空行。
    在这里插入图片描述

四、HTML格式化

  • 上标字:<sup></sup> X2
  • 下标字:<sub></sub> X2
  • 定义预格式文本,保留所有空格<pre></pre>
  • 定义缩写<abbr></abbr> WHO
  • 定义首字母缩写<acronym></acronym>
  • 定义地址, 元素通常以斜体显示<address></address>
  • 定义文字方向<bdo></bdo>
  • 定义长的引用,元素被缩进处理<blockquote></blockquote>
  • 定义短的引用语,周围会包围引号<q></q>
  • 定义引用、引证<cite></cite>
  • 定义一个定义项目<dfn></dfn>
    The WHO was founded in 1948.
    对缩写进行标记能够为浏览器、翻译系统以及搜索引擎提供有用的信息
  • 定义数学变量<var></var>
<p><var>E</var> = <var>m</var> <var>c</var><sup>2</sup></p>

E = m c2

五、HTML链接

<a href="" target="" name=""></a>

target:_blank 新窗口打开,默认打开新窗口
name:规定锚名称

<a name="tips">基本的注意事项 - 有用的提示</a>
<a href="#tips">有用的提示</a>

注释:请始终将正斜杠添加到子文件夹。假如这样书写链接:href=“http://www.w3school.com.cn/html”,就会向服务器产生两次 HTTP 请求。这是因为服务器会添加正斜杠到这个地址,然后创建一个新的请求,就像这样:href=“http://www.w3school.com.cn/html/”。

提示:命名锚经常用于在大型文档开始位置上创建目录。可以为每个章节赋予一个命名锚,然后把链接到这些锚的链接放到文档的上部。如果您经常访问百度百科,您会发现其中几乎每个词条都采用这样的导航方式。

提示:假如浏览器找不到已定义的命名锚,那么就会定位到文档的顶端。不会有错误发生。

六、HTML图像

<img src="" alt="" />

alt:定义可替换文本,当图片不显示时,显示该文本
图片也可以设置对齐方式,align=“bottom” align=“middle” align=“top”,定义图像尺寸,浏览器加载器会预留图像空间,减少闪烁。

图像也可当链接:

<a href="/example/html/lastpage.html">
<img border="0" src="/i/eg_buttonnext.gif" />
</a>

<map> 定义图像地图
<area> 定义图像地图中可点击区域

<img
src="/i/eg_planets.jpg"
border="0" usemap="#planetmap"
alt="Planets" />

<map name="planetmap" id="planetmap">

<area
shape="circle"
coords="180,139,14"
href ="/example/html/venus.html"
target ="_blank"
alt="Venus" />

<area
shape="circle"
coords="129,161,10"
href ="/example/html/mercur.html"
target ="_blank"
alt="Mercury" />

<area
shape="rect"
coords="0,0,110,260"
href ="/example/html/sun.html"
target ="_blank"
alt="Sun" />

</map>

七、HTML表格

跨行 colspan
跨列 rowspan
单元格内容与边框间的距离 cellpadding
单元格之间的距离 cellspacing
设置背景色 bgcolor
设置图像 background
控制围绕表格的边框 frame 参数:box above below hsides vsides

八、HTML块

块级元素:以新行开始和结束
<h1> <p> <ul> <table>
内联元素:
<b>, <td>, <a>, <img>

九、什么是响应式web设计

  • RWD 指的是响应式 Web 设计(Responsive Web Design)
  • RWD能够以可变尺寸传递网页
  • RWD对于平板和移动设备是必需的

十、HTML脚本

不支持脚本或禁用脚本的浏览器,显示noscript

 <noscript>Sorry, your browser does not support JavaScript!</noscript>

防止老实浏览器直接显示脚本内容,将脚本放入注释标签内,新浏览器会执行

<script type="text/javascript">
<!--
document.write("Hello World!")
//-->
</script>

十一、HTML头部元素

title:
1.定义浏览器工具栏中的标题
2.提供页面被收藏时显示的标题
3.显示在搜索引擎结果中的页面标题

base:
标签为页面上的所有链接规定默认地址或默认目标(target)

meta:
元数据不会显示在页面上,但计算机是可读的。用于规定页面的描述、关键词、文档作者、修改时间等

针对搜索引擎的关键词:一些搜索引擎会利用meta的name和content属性来索引页面,

<meta name="description" content="Free Web tutorials on HTML, CSS, XML" />
<meta name="keywords" content="HTML, CSS, XML" />

十二、XHTML

XHTML是以XML格式编写的HTML

十三、HTML5基础

第一行声明:<!DOCTYPE html>
编码声明(否则乱码):<meta charset="utf-8">

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文档标题</title>
</head>
 
<body>
文档内容......
</body>
 
</html>

H5中默认字符编码是UTF-8
允许4中新的属性语法:
1.允许属性简写 <input type="text" disabled>
2.允许不加引号<input type="text" value=John>
3.允许双引号或单引号<input type="text" value='John'>

如何使老版浏览器支持HTML5:
1.把元素定义为块级元素

header, section, footer, aside, nav, main, article, figure {
    display: block; 
}

2.添加新元素
已添加的 JavaScript 语句 document.createElement(“myHero”),仅适用于 IE。在ie8及更早版本,不允许对未知元素添加样式,为解决此问题,可添加以下代码:
引用 shiv 代码的链接必须位于 元素中

<!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!DOCTYPE html>
<html>

<head>
  <title>Creating an HTML Element</title>
  <!--[if lt IE 9]>
	  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <script>document.createElement("myHero")</script>
  <style>
  myHero {
    display: block;
    background-color: #ddd;
    padding: 50px;
    font-size: 30px;
  } 
  </style> 
</head>

<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

<myHero>My First Hero</myHero>

</body>
</html>

十四、HTML5表单元素

<datalist> 为input设置预定义选项列表,类似下拉列表带搜索功能

<form action="action_page.php">
<input list="browsers">
<datalist id="browsers">
   <option value="Internet Explorer">
   <option value="Firefox">
   <option value="Chrome">
   <option value="Opera">
   <option value="Safari">
</datalist> 
</form>

submit:
<input type="submit" /> 定义提交表单数据至表单处理程序的按钮。
表单处理程序在form的action中规定

<form action="action_page.php"></form>

keygen元素:用于表单的密钥对生成器,提交表单时会产生两个Key,私钥保存在客户端,公钥发送到服务器

<form action="demo_keygen.asp" method="get">
用户名: <input type="text" name="usr_name">
加密: <keygen name="security">
<input type="submit">
</form>

output元素用于不同类型的输出,比如计算或脚本输出:

<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0
<input type="range" id="a" value="50">100 +
<input type="number" id="b" value="50">=
<output name="x" for="a b"></output>
</form>

十五、Canvas和SVG

SVG

  • 可伸缩矢量图形
  • SVG 是一种使用 XML 描述 2D 图形的语言。
  • SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。
  • 在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

Canvas

  • Canvas 通过 JavaScript 来绘制 2D 图形。
  • Canvas 是逐像素进行渲染的。
  • 在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

Canvas 与 SVG 的比较
下表列出了 canvas 与 SVG 之间的一些不同之处。
Canvas
依赖分辨率
不支持事件处理器
弱的文本渲染能力
能够以 .png 或 .jpg 格式保存结果图像
最适合图像密集型的游戏,其中的许多对象会被频繁重绘
SVG
不依赖分辨率
支持事件处理器
最适合带有大型渲染区域的应用程序(比如谷歌地图)
复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
不适合游戏应用
可通过文本编辑器来创建和修改,可被搜索、索引、脚本化或压缩
可伸缩且不降低图像质量

canvas例子:
绘制矩形

1. 创建一个画布
<canvas id="myCanvas" width="200" height="100"></canvas>
2. 绘制图形
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000"; //图形背景色
ctx.fillRect(0,0,150,75);
ctx.fillRect(x,y,width,height);//(0,0)从左上角开始

绘制路径

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.moveTo(0,0);//线条开始坐标
ctx.lineTo(200,100);//线条结束坐标
ctx.stroke();

绘制圆形

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI); //x,y,r,start,stop
ctx.stroke();

绘制文本

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello World",10,50);//实心文本,text,x,y

ctx.strokeText("Hello World",10,50);//空心文本

绘制渐变矩形

createLinearGradient(x,y,x1,y1) - 创建线条渐变
createRadialGradient(x,y,r,x1,y1,r1) - 创建一个径向/圆渐变

===============================================
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
 
// 创建渐变
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red"); //必须是两种以上停止颜色,参数使用坐标来描述,可以是0至1
grd.addColorStop(1,"white");
 
// 填充渐变,设置fillStyle或strokeStyle的值为 渐变,fillStyle和fillRect成对使用
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);

绘制图像

<img id="scream" src="img_the_scream.jpg" alt="The Scream" width="220" height="277"><p>Canvas:</p>
<canvas id="myCanvas" width="250" height="300" style="border:1px solid #d3d3d3;">
您的浏览器不支持 HTML5 canvas 标签。</canvas>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");
ctx.drawImage(img,10,10);//image,x,y

SVG例子:

<!DOCTYPE html>
<html>
<body>
 
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">
  <polygon points="100,10 40,180 190,60 10,60 160,180"
  style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;">
</svg>
 
</body>
</html>

十六、存储

1.cookies
2.webStorage

  • localStorage
  • sessionStorage
名称存储大小数据有效期作用域通信应用场景API
cookies<=4k有服务器生成,可设置失效时间,默认关闭浏览器时失效在同源窗口中共享在浏览器和服务器之间传递,保存过多数据会造成性能问题自动登录,记住密码,保存事件信息 原生API不友好,需自行封装 //创建cookie $.cookie('name', 'value', { expires: 7, path: '/', domain: 'example.com', secure: false}); //读取 $.cookie('name'); $.cookie(); //删除 $.removeCookie('name'); //设置cookie时如果设置了path属性或secure属性,删除的时候要带着这些属性,否则无法成功删除cookie。删除cookie时,必须传递用于设置cookie的完全相同的路径,域和安全选项,除非您依赖于默认选项。
sessionStorage>=5M在当前浏览器或当前页面关闭时失效在同源同一浏览器同一窗口页面中共享,通过同源同一浏览器同一窗口页面中的链接用http协议打开新的窗口时共享仅在本地保存,不参与和服务器通信敏感账号一次性登录 //保存数据,数据为string sessionStorage.setItem('key','value'); //获取数据 sessionStorage.getItem('key'); //删除某个数据 sessionStorage.removeItem('key'); //删除所有数据 sessionStorage.clear();
localStorage>=5M永久有效,除非手动永久清除,可自行封装设置过期时间的方法同源同浏览器共享仅在本地保存,不参与和服务器通信长期登录 //保存数据,数据为string localStorage.setItem('key','value'); //获取数据 localStorage.getItem('key'); //删除某个数据 localStorage.removeItem('key'); //删除所有数据 localstorage.clear();

十七、缓存(网页可离线/脱机浏览)

  • 离线浏览 - 用户可在应用离线时使用它们
  • 速度 - 已缓存资源加载得更快
  • 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源

1.通过html标签的mainfest属性设置缓存文件

<html manifest="mf.appcache"></html>

2.配置缓存文件mf.appcache
CACHE MANIFEST #文件声明
CACHE #需要缓存的文件
#缓存theme.css和main.js
/theme.css
/main.js
NETWORK: #不被缓存的文件
#不缓存login.php, *表示全部
login.php
FALLBACK: #设置无法访问某文件时访问的文件
#无法访问index.js时访问main.js
/index.js /main.js

3.更新缓存
修改manifest文件
通过js清除缓存,window.applicationCache.update();
清除浏览器缓存

十八、web worker(运行在后台的js)

当在html页面中执行脚本时,页面是不可响应的直到脚本执行完成。web worker运行在后台,独立于其他脚本,不影响页面性能。

  • 检测浏览器是否支持
if (typeof(Worker) !== "undefined") {
    // 是的!支持 Web worker!
    // 一些代码.....
	} else {
    // 抱歉!不支持 Web Worker!
	}
  • 创建web worker文件
    创建一个计数器脚本"timer.js",postMessage()向页面传回一段消息
 var i = 0;

function timedCount() {
    i = i + 1;
    postMessage(i);
    setTimeout("timedCount()",500);
}

timedCount();

当 web worker 传送消息时,会执行事件监听器中的代码。来自 web worker 的数据会存储于 event.data 中。使用 terminate() 方法终止 web worker,并释放浏览器/计算机资源

<script>
var w;

function startWorker()
{
if(typeof(Worker)!=="undefined")
  {
  if(typeof(w)=="undefined")
  {
  w=new Worker("/example/html5/demo_workers.js");
  }
  w.onmessage = function (event) {
    document.getElementById("result").innerHTML=event.data;
    };
  }
else
  {
  document.getElementById("result").innerHTML="Sorry, your browser does not support Web Workers...";
  }
}

function stopWorker()
{ 
w.terminate();
}
</script>

注意:web worker位于外部文件中,无法访问window对象、document对象、parent对象

十九、Server-Sent Event(允许网页从服务器获得更新)

SSE:服务器向浏览器推送信息,单向通道
基于http协议,服务器向浏览器发送流信息,即不是一次性发送的数据包,而是不间断的发送数据包,本质就是下载。比如视频播放。IE/Edge不支持。

优点:

名称描述
SSE使用http协议;轻量级;默认支持断线重连;一般只用来传送文本,二进制数据需要编码后传送;支持自定义发送消息类型
WebSocketwebsocket是独立的协议,协议相对复杂;断线重连需要自己实现;默认支持传送二进制数据;

客户端API:
SSE的客户端API部署在EventSource对象上。
1.检测是否支持SSE

if('EventSource' in window){
.....
}

2.生成一个EventSource实例,url可跨域

var source=new EventSource(url);

//跨域设置,withCredentials属性表示是否一起发送cookie
var source=new EventSource(url,{withCredentials:true});

EventSource实例的readyState属性(表明连接当前状态,只读):

  • EventSource.CONNECTING:表示连接还未建立或者断线正在重连
  • EventSource.OPEN:表示连接已建立,可接受数据
  • EventSource.CLOSED:表示连接已断开,且不会重连

3.事件

//1.建立连接触发Open事件
source.onopen = function (event) {
  // ...
};

// 另一种写法
source.addEventListener('open', function (event) {
  // ...
}, false);

//2.客户端接收到来自服务器的消息,触发message事件
source.onmessage = function (event) {
  var data = event.data;
  // handle message
};

// 另一种写法
source.addEventListener('message', function (event) {
  var data = event.data;
  // handle message
}, false);

//3.发生通信错误,如连接中断,触发error事件
source.onerror = function (event) {
  // handle error event
};

// 另一种写法
source.addEventListener('error', function (event) {
  // handle error event
}, false);

//4.关闭SSE连接
source.close();

4.服务器实现
1)数据格式
必须是utf-8编码的文本
http头信息:
Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alive
2)发送的信息由若干个message组成,每个message之间用\n\n分隔,一个message内由若干行组成,每行格式如下:
[field]:value\n

field取值:data、event、id、retry、空(以冒号开头表示注释)

注释:服务器为保持连接不中断,每隔一段时间会向浏览器发送一个注释。

发送一个JSON数据的例子:

data: {\n
data: "foo": "bar",\n
data: "baz", 555\n
data: }\n\n

id表示每一条数据的编号,浏览器用lastEventId属性读取这个值。一旦连接断线,浏览器会发送一个 HTTP 头,里面包含一个特殊的Last-Event-ID头信息,将这个值发送回来,用来帮助服务器端重建连接。因此,这个头信息可以被视为一种同步机制。

event字段表示自定义事件类型,默认是message事件,浏览器可以用addEventListener()监听该事件。

event: foo\n
data: a foo event\n\n

data: an unnamed event\n\n

event: bar\n
data: a bar event\n\n

上面的代码创造了三条信息。第一条的名字是foo,触发浏览器的foo事件;第二条未取名,表示默认类型,触发浏览器的message事件;第三条是bar,触发浏览器的bar事件。

retry字段指定浏览器重发连接的时间间隔
两种情况会导致浏览器重新发起连接:一种是时间间隔到期,二是由于网络错误等原因,导致连接出错。

SSE要求服务器与浏览器保持连接,不同的服务器所消耗的资源不一样,比如apache服务器,每个连接就是一个线程,node则是所有的连接都使用一个线程,消耗的资源会小很多,但是要求每个连接不能包含耗时的操作如磁盘的IO读写。
node的SSE服务器实例:

var http = require("http");

http.createServer(function (req, res) {
  var fileName = "." + req.url;

  if (fileName === "./stream") {
    res.writeHead(200, {
      "Content-Type":"text/event-stream",
      "Cache-Control":"no-cache",
      "Connection":"keep-alive",
      "Access-Control-Allow-Origin": '*',
    });
    res.write("retry: 10000\n");
    res.write("event: connecttime\n");
    res.write("data: " + (new Date()) + "\n\n");
    res.write("data: " + (new Date()) + "\n\n");

    interval = setInterval(function () {
      res.write("data: " + (new Date()) + "\n\n");
    }, 1000);

    req.connection.addListener("close", function () {
      clearInterval(interval);
    }, false);
  }
}).listen(8844, "127.0.0.1");

二十、HTML5 webSocket

webSocket:一种在单个TCP连接上进行全双工通讯的协议,基于TCP协议,更好的节省服务器带宽和资源,并能够更实时地通讯。
建立连接的过程:客户端向服务器发起http请求,在头信息附加“Upgrade:WebSocket”表明这是一个申请协议升级的HTTP请求,服务器端解析附加头信息后产生应答信息返回给客户端,连接就建立起来了。
WS: WebSocket协议
WSS:WebSocket加密版,表示在TLS(安全传输层协议)之上的WS

1.创建socket
var Socket=new WebSocket(url,[protocol]);
protocol可选项,指定可接受的子协议。

WebSocket属性:

  • readyState:
    0:未建立连接
    1:已建立连接,可通讯
    2:连接正在关闭中
    3.:连接已关闭或连接不能打开

  • bufferedAmount::只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。

WebSocket事件:
open:onopen建立连接时触发
message:onmessage客户端接收服务器数据时触发
error:onerror通信发生错误时触发
close:onclose连接关闭时触发

WebSocket方法:
send():使用连接发送数据
close():关闭连接

客户端请求:
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: example.com
Origin: http://example.com
Sec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==
Sec-WebSocket-Version: 13

服务器回应:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=
Sec-WebSocket-Location: ws://example.com/

二十一、HTML5 MathML

<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title>菜鸟教程(runoob.com)</title>
   </head>
    
   <body>
    
      <math xmlns="http://www.w3.org/1998/Math/MathML">
        
         <mrow>
            <msup><mi>a</mi><mn>2</mn></msup>
            <mo>+</mo>
                
            <msup><mi>b</mi><mn>2</mn></msup>
            <mo>=</mo>
                
            <msup><mi>c</mi><mn>2</mn></msup>
         </mrow>
            
      </math>
        
   </body>
</html> 

//2*2矩阵
<math xmlns="http://www.w3.org/1998/Math/MathML">
        
         <mrow>
            <mi>A</mi>
            <mo>=</mo>
            
            <mfenced open="[" close="]">
            
               <mtable>
                  <mtr>
                     <mtd><mi>x</mi></mtd>
                     <mtd><mi>y</mi></mtd>
                  </mtr>
                    
                  <mtr>
                     <mtd><mi>z</mi></mtd>
                     <mtd><mi>w</mi></mtd>
                  </mtr>
               </mtable>
               
            </mfenced>
         </mrow>
      </math>

mrow:同行显示
mi:字符
mn:数字
mo:运算符
msup:上标
mfenced:外包含
mtable:矩阵table
mtr:矩阵行
mtd:矩阵单元格

二十一、HTML5拖放

1.设置元素可拖动

<img draggable="true">

2.拖动什么
ondragestart属性调用了函数drag(event),该函数规定了被拖放的数据

<img draggable="true" ondragstart="drag(event)">
function drag(ev)
{
	//设置被拖放数据的数据类型和值,Text是DOMString
    ev.dataTransfer.setData("Text",ev.target.id);
}

3.允许放置
元素默认是不允许放置到其他元素的,需阻止默认处理方式,调用ondrageover事件的preventDefault()

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
function allowDrop(ev)
{
    ev.preventDefault();
}

4.进行放置

function drop(ev)
{
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
}
调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
被拖数据是被拖元素的 id ("drag1")
把被拖元素追加到放置元素(目标元素)中

二十二、HTML5 Web SQL

核心方法:

  • openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。
  • transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。
  • executeSql:这个方法用于执行实际的 SQL 查询。

1.打开或创建数据库
var db=openDatabase('mydb','1.0','Test DB',2*1024*1024);//数据库名称、版本号、描述文本、数据库大小
第五个参数:创建回调会在创建数据库后调用

2.创建表操作

db.transaction(function (tx){
	tx.executeSql('create table if not exists LOGS(id unique,log)');
});

3.插入数据

db.transaction(function (tx){
	tx.executeSql('create table if not exists LOGS(id unique,log)');
	tx.excuteSql('insert into LOGS values(1,'数据1')');
	//动态插入数据
	tx.excuteSql('insert into LOGS values(?,?),[e_id,e_log]);
});

4.读取数据

<div id="status" name="status">状态信息</div>
db.transaction(function (tx){
	tx.executeSql('select * from LOGS',[],function(tx,results){
	//等同于var len=**; var i;
		var len=results.rows.length,i; 
		for(i=0;i<len;i++){
		  msg=results.rows.item(i).log;
		  document.querySelector('#status').innerHTML+=msg;
		}
	},null);
});

5.删除记录

db.transaction(function(tx){
	tx.executeSql('delete from LOGS where id=?',[id]);
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值