算法(冒泡法排序)、DOM、节点、选择器、定位

一、 算法(冒泡法排序)

// 冒泡法排序-升序
var data=[15,3,0,9,27,6,44,19,1,30];
var i,j,temp;
for(i=0;i<data.length-1;i++){
	for(j=i+1;j<=data.length-1;j++){
		if(data[i]>data[j]){
			temp=data[i];
			data[i]=data[j];
			data[j]=temp;
		}
	}
}
document.write(data);

二、DOM(Document Object Model文档对象模型)

为了能让JavaScript语言能够操作HTML文档中的对象,设计了一套命令来实现对象HTML对象操作,这一整套命令被称为“DOM”
D文档指的是HTML文档;O对象指的是HTML文档中的标记
在DOM中,HTML文档中的标记被称为“节点”(node)

三、节点的分类

1、元素节点:(element)HTML中的标记对就是元素节点
2、属性节点:(attribute)HTML标记中的属性就是属性节点。
3、文本节点:(text)标记对中的文本内容就是文本节点。

四、查找元素节点:

1、document.querySelector():根据选择器查找元素节点,查找到满足选择器的第一个节点。

document.querySelector(“h1”);  // 从HTML文档中找h1标记。
document.querySelector(“#hhh”); //  从HMTL文档中找id属性取值为hhh的元素 节点
document.querySelector(“.dl”);  // 从HTML文档中找class属性取值为dl的元素节点

2、document.querySelectorAll():根据选择器查找元素节点,查找到满足选择器的所有节点。

var s=document.querySelectorAll("li");   //所有的li元素节点
console.log(s.length);     //输出所有的li元素节点的个数
for(var i=0;i<s.length;i++){
console.log(s[i]);     //在控制台输出节点
}

3、 document.getElementById(),根据id属性的取值获得元素节点。
例:寻找id属性取值为hhh的元素节点。

方法1:var x=document.getElementById(“hhh”);
方法2:var y=document.querySelector(“#hhh”);

4、document.getElementsByClassName(),根据class属性的而去之获得元素节点们。
例:寻找class属性取值为aaa的元素节点。

方法1:var x=document.getElementsByClassName(“aaa”);
方法2:var y=document.querySelectorAll(“.aaa”);

5、 document.getElementsByTagName(),根据标记对的名称获得元素节点们。
例:寻找a标记的元素节点。

var x=document.getElementsByTagName(“a”);
console.log(x[0]);

6、 document.getElementsByName(),根据name属性的取值获得元素节点们。
例:寻找name属性取值为pwd的密码框。

var x=document.getElementsByName(“pwd”);
console.log(x[0]);

注意:
1、利用document引出的上述方法可以在整个文档范围内进行查找。
2、利用元素节点引出的上述方法只能在这个元素节点的内部进行查找。

五、查找元素节点:DOM0级

查找元素节点除了以上的六个方法以外,还有一些属性可以实现。
(1)document.all:查找DOM结构中所有的元素节点。
可以通过数据元素的方式来获取任意一个元素节点。
例如:var x=document.all[0]; //x表示<html>元素节点
(2)document.links:查找DOM结构中所有的a元素节点。

 例: var y=document.links;
      console.log(y[0]);    //页面中第一个a标签

(3)document.images:查找DOM结构中所有的img元素节点。

 例:var i=document.images;
   	 console.log(i[0]);   //页面中第一个img标签

(4)document.forms:查找DOM结构中所有的form元素节点。

 例:var y=document.forms;
     console.log(y[0]);  //页面中第一个form标签

六、元素节点的可编辑性:

1、contentEditable:设置元素节点是否可以编辑。
contentEditable=true,表示元素节点可编辑。
contentEditable=false,表示元素节点不可编辑。

2、isContentEditable:返回元素节点是否处于可编辑状态。
isContentEditable=true,表示元素节点处于可编辑状态。
isContentEditable=false,表示元素节点处于不可编辑状态。

七、元素节点的tagName属性:

1、功能:返回元素节点的大写形式的标记名称。
2、在事件中可以通过下列代码得到触发事件的元素节点。

 event.target.tagName.toLowerCase()

八、元素节点的className属性:

1、功能:返回/设置元素节点的类名。
2、若元素节点没有class属性,则className属性将返回空串。
若元素节点有class属性,则className属性将返回元素节点class属性的取值。
3、例1:为一个没有class属性取值的<h1></h1>标记对设置类名。

var h1Node=document.querySelector(“h1”);
h1Node.className=“yes”;
console.log(h1Node);

九、元素节点的HTML属性:

1、HTML文档中标记的属性可以直接用在脚本当中。
2、功能:返回/设置元素节点在HTML文档中的属性值。
3、允许为元素节点添加自定义HTML属性,但是添加的自定义属性无法在元素中显示出来。
例2:为一个<div></div>标记添加一个abc的属性。

var boxNode=document.getElementById(“box”);
boxNode.abc=“Hello”;
console.log(boxNode.abc);    // Hello

案例:制作一个表格,在表格每一行的末尾添加一个“编辑”和“删除”按钮。完成编辑和
删除功能。

<table id="box">
		<tr>
			<th>姓名</th>
			<th>性别</th>
			<th>年龄</th>
			<th>电话</th>
			<th>住址</th>
			<th>操作</th>
		</tr>
		<tr>
			<td>康××</td>
			<td>女</td>
			<td>20</td>
			<td>155</td>
			<td>平山</td>
			<td><button class="abc">编辑</button> <button class="del">删除</button></td>
		</tr>
		<tr>
			<td>何××</td>
			<td>男</td>
			<td>20</td>
			<td>155</td>
			<td>邢台</td>
			<td><button class="abc">编辑</button><button class="del">删除</button></td>
		</tr>
		<tr>
			<td>底××</td>
			<td>女</td>
			<td>21</td>
			<td>155</td>
			<td>地球</td>
			<td><button class="abc">编辑</button><button class="del">删除</button></td>
		</tr>
		<tr>
			<td>康×</td>
			<td>女</td>
			<td>20</td>
			<td>155</td>
			<td>平山</td>
			<td><button class="abc">编辑</button><button class="del">删除</button></td>
		</tr>
	</table>
*{
	margin:0;
	padding: 0;
}
table{
	width: 700px;
	height: 200px;
	border:1px solid gray;
	margin:0 auto;
}
table th,
table td{
	border:1px solid #cccccc;
}
table td{
	text-align: center;
}
// 给父元素绑定单击事件
box.onclick=function(){
	// 如果真正触发事件的对象是abc按钮
	if(event.target.className=="abc"){
		trNode=event.target.parentElement.parentElement;
		tdNodes=trNode.querySelectorAll("td");

		// 如果真正触发事件的对象的文本内容是编辑
		if(event.target.textContent=="编辑"){

			for(var i=0;i<tdNodes.length-1;i++){

				// 真正触发事件对象的一行td变成可编辑
				tdNodes[i].contentEditable=true;
			}
			tdNodes[0].style.backgroundColor="#cccccc";
			tdNodes[0].focus();
			event.target.textContent="保存";
		}else{
			for(var i=0;i<tdNodes.length-1;i++){
				tdNodes[i].contentEditable=false;
			}
			tdNodes[0].style.backgroundColor="";
			event.target.textContent="编辑";
		}


	}
	// 如果真正触发事件的对象是del
	if(event.target.className=="del"){
		var x=window.confirm("您确定删除吗?");
		if(x){
			var tbodyNode=document.querySelector("tbody");
			var trNode=event.target.parentElement.parentElement;
			tbodyNode.removeChild(trNode);
		}
	}
}

十、实例:

在页面中有两个文本框,用来输入两个整数,单击按钮计算两个整数的和并利用alert()显示出结果。
1、如何获取文本框的内容:
A .为文本框设置name属性。
B .利用document.forms[0].文本框的name属性取值 可以得到文本框
C .利用value属性可以得到文本框的内容
例:文本框的name属性取值为data1:<input type=”text” name=”data1” />

var x=document.forms[0].data1.value;    //得到name属性为data1的文本框的内容

2、注意:从文本框中获得的数据默认情况下都是字符型。
3、本例的代码如下所示:

 <input type=”button” value=”计算和” onclick=”sum()” />
    function sum(){
      var x=document.forms[0].data1.value;
      var y=document.forms[0].data2.value;
      var r=parseInt(x) + parseInt(y);
      window.alert(r);
}

十一、总结选择器(selector):

  1. 基本选择器:
    *,通配符选择,选择出HTML中所有的标签。
    #id,ID选择器,选择出id属性取值为指定值得标签。(#box)
    .class,类选择器,选择出class属性取值为指定值得标签。(.ok)
    element,元素选择器,选择出指定的标签。(table)
  2. 层次选择器:
    div>p,子选择器。<div><p></p></div>
    div p,后代选择器。<div><ul><p></p></ul></div>
    div+p,相邻选择器。下面的、紧邻的、同级的<div></div><p></p>
    div~p,兄弟选择器。下面的、全部的、同级的<div></div><h1></h1><p></p>
  3. 伪类选择器:必须以:开头
  4. 伪元素选择器:必须以::开头。

十二、定位:改变元素的定位模式。

该属性可以取如下值:

  1. static,默认值,元素在页面中默认采用流式定位。
  2. absolute,绝对定位,元素相对于浏览器左上角进行定位。
  3. relative,相对定位,元素相对于自身原来的位置进行定位。
  4. fixed,固定定位,元素相对于浏览器左上角进行定位,在具有滚动条的情况下,元素
    固定到指定的位置不动。(元素相对于页面左上角进行定位)

当父元素为相对定位(非流式定位),子元素为绝对定位时,子元素的四个位置是相对于父元素左上角进行定位的。
绝对定位、相对定位、固定定位统称为“非流式定位”。非流失定位的元素可以使用下列四个位置属性:left、right、top、bottom。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值