JavaScript DOM编程艺术之3-4章知识点总结

1:HTML5新增方法

getElementByClassName("name1  name2.....")

可以指定多个类名,且顺序不影响,匹配到的元素是类名同时具有name1和name2的(可以有多的类名)


因为比较新的浏览器才支持这个,所以最好写成这样一个函数:

<span style="white-space:pre">	</span><script>
	/*
		node是DOM树中的搜索起点,classname为需要搜索的类名
	*/
	function getElementByClassName(node,classname){
		if(node.getElementByClassName)
			return node.getElementByClassName(classname);
		else{
			var results=new Array();
			var elems=document.getElementsByTagName("*");
			for(var i=0;i<elems.length;i++){
				if(elems[i].className.indexOf(classname)!=-1){
					results[results.length]=elems[i];
				}
			}
			return results;
		}
	}
	</script>

2:getAttribute,setAttribute

这两种方法不属于document对象,所以不能通过document对象调用,它只能通过元素节点对象调用

小例子:

	var paras=document.getElementsByTagName("p");
	for(var i=0;i<paras.length;i++){
		var title_text=paras[i].getAttribute("title");
		if(title_text){
			paras[i].setAttribute("title","blablabla");
			alert(paras[i].getAttribute("title"));
		}	
	}

3:chiledNodes与nodeType

childNodes属性可以用来获取任何一个元素的所有子元素(仅儿子辈),是一个数组

但childNodes属性返回的数组包含所有类型的节点,而不仅仅是元素节点(空格,换行都会被解释为节点)

可以用nodeType属性,可以知道节点类型(一共12种)

nodeType==1  元素节点

nodeType==2  属性节点

nodeType==3  文本节点

 而element.children   就相当于  element.childNodes(nodeType==1)


4:nodeValue

可以返回或设置指定节点的节点值

其中需要注意些地方,具体在例子中体现:

<HEAD>   
  <TITLE>空谷悠悠</TITLE>   
 </HEAD>   
 <BODY>   
  <table>   
    <tr>   
        <td id="john" name="myname">John</td>   
        <td>Doe</td>   
        <td id="jack">Jack</td>   
    </tr>   
  </table>  
  <script>   
 var d = document.getElementById("john");      
    alert(d.nodeType)   
    alert(d.nodeName)   
    alert(d.nodeValue) 

/*nodeType:ELEMENT_NODE

nodeType值:1

nodeName:元素标记名    //此处为TD

nodeValue:null
*/

 var d = document.getElementById("john").getAttributeNode("name");     
    alert(d.nodeType)   
    alert(d.nodeName)   
    alert(d.nodeValue)

/*
nodeType:ATTRIBUTE_NODE

nodeType值:2

nodeName:属性名  // name

nodeValue:属性值  //myname
*/

    var d = document.getElementsByTagName("td")[0].firstChild    //<td>元素本身的nodeValue是空,需要的是它包含的文本节点的值!!  
    alert(d.nodeType)   
    alert(d.nodeName)   
    alert(d.nodeValue)

/*
nodeType:TEXT_NODE

nodeType值:3

nodeName:#text

nodeValue:文本内容   // John
*/



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值