文档版本 | 开发工具 | 测试平台 | 工程名字 | 日期 | 作者 | 备注 |
---|---|---|---|---|---|---|
V1.0 | 2016.04.14 | lutianfei | none |
文档
:标记型文档 (HTML/XML)对象
:封装了属性和行为的实例,可以直接被调用。模型
:所有的标记型文档都具有一些共性特征的一个体现。通过DOM的方法,把HTML全部元素(标签
、文本
、属性
)都封装成了对象。
文本
DOM想要操作标记型文档必须先解析。(解析器)
* 注:Node节点代表以上4种对象。
xml1.0
的一些新特性。DHTML
:动态的HTML,它不是一门语言,是多项技术综合体的简称。 html
,css
,dom
,javascript
。Html
:负责提供标签,封装数据,这样便于操作数据。Css
:负责提供样式,对标签中的数据进行样式定义。Dom
:负责将标签及其内容解析,封装成对象,对象中具有属性和行为。Javascript
:负责提供程序设计语言,对页面中的对象进行逻辑操作。
<input type="text" id="nameId" value="zhangsan"/><br/>
<input type="text" name="username" value="zhaosi"/><br/>
<input type="text" name="username" value="wangwu"/><br/>
<input type="text" name="username" value="ermazi"/><br/>
body>
<script type="text/javascript">
var input = document.getElementById("nameId");
//alert(input.value);
var inputs = document.getElementsByName("username");
// alert(inputs.length);
for(var i=0;ivar input1 = inputs[i];
// alert(input1.value);
}
var inputs2 = document.getElementsByTagName("input");
// alert(inputs2.length);
script>
<ul>
<li>北京li>
<li>上海li>
<li>广州li>
ul>
body>
<script type="text/javascript">
/*
需求:在ul无序列表下,添加一个子节点。深圳
*/
// 创建元素对象
var li = document.createElement("li");
// 创建文本的对象
var text = document.createTextNode("深圳");
// 把文本对象添加到元素对象下面,作为子节点
li.appendChild(text);
// 获取ul
var ul = document.getElementsByTagName("ul")[0];
// 把元素对象添加ul的下面,作为子节点
ul.appendChild(li);
script>
getAttribute
(“属性名称”); 获取属性的值setAttribute
(“属性名称”,”属性的值”); 设置或者修改属性的值removeAttribute
(“属性名称”); 删除属性
<input type="text" id="nameId" value="zhangsan" />
<ul id="ulId">
<li>北京li>
<li>上海li>
<li>广州li>
ul>
body>
<script type="text/javascript">
var input = document.getElementById("nameId");
// alert(input.value);
// alert(input.getAttribute("value"));
// 修改
//input.setAttribute("value", "zhaosi");
//alert(input.getAttribute("value"));
input.removeAttribute("value");
//alert(input.getAttribute("value"));
// ============================================================================
var ul = document.getElementById("ulId");
var lis = ul.childNodes; //获取的元素中包含了空格
// alert(lis.length);
var lis2 = ul.getElementsByTagName("li");
alert(lis2.length);
script>
nodeName 节点名称
#text
的字符串 nodeType 节点类型
节点类型 | 编号 | 说明 |
---|---|---|
Node.ELEMENT_NODE | 1 | 元素节点 |
Node.ATTRIBUTE_NODE | 2 | 属性节点 |
Node.TEXT_NODE | 3 | 文本节点 |
父节点: parentNode
元素节点
,因为只有元素节点才有可能包含子节点。子节点
childNodes
:获取指定节点的所有子节点集合。(含空格)firstChild
:获取指定节点的第一个子节点。lastChild
:获取指定节点的最后一个子节点。同辈节点
IE6-8 | IE9-11 Chrome FireFox |
---|---|
firstChild 第一个节点 | firstElementChild?第一个节点 |
lastChild最后一个节点 | lastElementChild 最后一个节点 |
nextSibling 下一同级节点 | nextElementSibling下一同级节点 |
previousSibling 上一同级节点 | previousElementSibling?上一同级节点 |
ul
与 span
在使用Node节点时的注意事项ul
获取子节点时,必须使用ul.firstElementChild;
span
的标签获取span中间的文本内容(也是对象),需要使用firstChild
;(不管是什么浏览器)attributes
是Node接口定义的属性。attributes.getNameItem()
和Element对象的getAttribute()方法类似。hasChildNodes()
hasAttributes()
插入节点
appendChild()
方法: 父节点调用,在末尾添加子节点insertBefore(new,old)
方法: 父节点调用,在指定节点之前添加子节点 删除节点:removeChild()
:父节点调用,删除节点
replaceChild(new,old)
: 父节点调用,替换节点cloneNode(boolean)
不是父节点调用,其中,参数boolean是判断是否复制子节点。默认是falsegetElementById()
:通过节点的id属性,查找对应节点。getElementsByName()
:通过节点的name属性,查找对应节点。getElementsByTagName()
:通过节点名称,查找对应节点。previousSibling 上一个兄弟节点
appendChild(node) 父节点调用,在末尾添加子节点
cloneNode(boolean) 不是父节点调用,复制节点
练习:
<input type="text" id="nameId" value="zhangsan" />
<span id="spanId">
我是span的区域
span>
<ul>
<li>北京li>
<li id="sh">上海li>
<li>广州li>
ul>
<ul>
<li>小时代1li>
<li id="xsd2">小时代2li>
<li>小时代3li>
ul>
<hr/>
<button id="btnId">
我是按钮
button>
<span id="spanId2">span>
body>
<script type="text/javascript">
/*
var input = document.getElementById("nameId");
//alert(input.nodeName); // INPUT
//alert(input.nodeType); // 1
//alert(input.nodeValue); // null
var attr = input.getAttributeNode("type");
//alert(attr.nodeName); // type
//alert(attr.nodeType); // 2
//alert(attr.nodeValue); // text
var span = document.getElementById("spanId");
var text = span.firstChild;
//alert(text.nodeName); // #text
//alert(text.nodeType); // 3
//alert(text.nodeValue); // 我是span的区域
var ul = document.getElementById("ulId");
var li = ul.firstElementChild;
// alert(li.nodeType); //1
// 是否包含子节点
// alert(ul.hasChildNodes());
// 是否包含属性
// alert(ul.hasAttributes());
// 点击上海,用小时代2替换上海
document.getElementById("sh").onclick = function(){
// var sh = document.getElementById("sh");
// var xsd2 = document.getElementById("xsd2");
// var ul = sh.parentNode;
// ul.replaceChild(xsd2, sh);
var ul = this.parentNode;
var xsd2 = document.getElementById("xsd2");
ul.replaceChild(xsd2,this);
};
// 删除节点
document.getElementById("sh").onclick = function(){
// this.parentNode.removeChild(this);
var sh = document.getElementById("sh");
var ul = sh.parentNode;
ul.removeChild(sh);
};
*/
// 复制button的按钮,添加到span标签的中间
var btn = document.getElementById("btnId");
var newbtn = btn.cloneNode(true);
var span = document.getElementById("spanId2");
span.appendChild(newbtn);
script>
F12
可进行bug调试
<span id="spanId">
这是span的区域
span>
<span id="spanId2">span>
<h3>获取焦点的事件h3>
输入姓名:<input type="text" name="username" onfocus="run()" onblur="run2()"/><span id="uspan">span><br/>
输入密码:<input type="password" name="password" /><span id="pspan">span>
body>
<script type="text/javascript">
/*
var span = document.getElementById("spanId");
// alert(span.innerHTML);
var span2 = document.getElementById("spanId2");
span2.innerHTML = "这是span的区域2";
*/
// 提示输入的信息
function run(){
var uspan = document.getElementById("uspan");
uspan.innerHTML = "您只能输入特殊字符";
}
// 失去焦点的时候
//
function run2(){
// 获取用户输入的姓名
// ajax,把用户输入的姓名,传到后台,在后台做匹配的操作,后台处理完成,返回结果。
var uspan = document.getElementById("uspan");
uspan.innerHTML = "用户名已存在";
}
script>
<html>
<script language="JavaScript">
function mouseovertest(){
document.getElementById("info").value = "鼠标在输入框上";}
function mouseouttest(){
document.getElementById("info").value= "鼠标在输入框外";}
script>
<body>
<input type="text" id="info" onmouseover="mouseovertest();" onmouseout="mouseouttest();"/>
body>
html>
鼠标点击事件(重点)
加载与卸载事件(重点)
聚焦与离焦事件(重点)
键盘
"text" id="nameId2" οnkeyup="run3()" style="width: 200px"/>
<div id="divId" style="width: 200px;display: none">
<table>
<tr>
<td>javatd>
tr>
<tr>
<td>jstd>
tr>
<tr>
<td>jsptd>
tr>
table>
div>
body>
<script type="text/javascript">
/*
*/
function run(){
var input = document.getElementById("nameId");
input.style.backgroundColor = "gray";
}
function run3(){
var div = document.getElementById("divId");
div.style.display = "block";
}
script>
改变事件(重点)
控制表单的提交(重点)
onsubmit
,对号就勾上了。