DOM独立于具体的编程语言,通常通过JavaScript访问DOM,不过并不严格要求这样。可以使用任何脚本语言来访问DOM,这要归功于其一致的API。表3-1列出了DOM元素的一些有用的属性,表3-2列出了一些有用的方法。Jquery的遍历,其实就当前位置的元素相对于其他元素的位置的关系进行查找或选取HTML元素。以某项选择开始,并沿着这条线进行移动,或向上(父级)、或向下(子级)、或水平(同级),直到找到目标元素为止,这种移动也被成为对DOM进行遍历。
其实对于DOM来说,这个不陌生,Jquery的遍历也就是在DOM树上上蹿下跳,当然这种上蹿下跳不是没有规则的,胡乱的找是让人鄙视的。通俗的说,在一颗树上(你也在树上,已经爬上去了,哈哈),以你所在的位置为起点,以树上有个桃子为目的地,你的这个起点也就是当前 this ,去移动去摘桃子的过程就是Jquery遍历,所以相对应的Jquery所衍生出的遍历方法可以分为三大类,即Jquery遍历之父级(祖先)、同级(同胞)和子级(后代)三种。js肯定是不能直接 *** 作java的list啊,你可以把list循环成一个json格式的字符串如:
String str="";
for(int i=0;i<list2size();i++){
str+=("{id:'"+list2get(i)getId()+"',pid:'"+list2get(i)getparentId()+"'},");
}
if(strlength()>0){
str="["+strsubstring(0,strlength()-1)+"]";
}
然后js里面这样var list='<%=str %>';
list=new Function("return "+ list)();
这样后list就是个和java中list差不多的对象数组了
list[i]id等价于java的list2get(i)getId()<body>
<iframe id="container" name="container" src="frames/indexhtml"></iframe>
</body>
在chrome的console里:
documentgetElementById("container")
Blocked a frame with origin "null" from accessing a frame with origin "null" Protocols, domains, and ports must match
Blocked a frame with origin "null" from accessing a frame with origin "null" Protocols, domains, and ports must match
Blocked a frame with origin "null" from accessing a frame with origin "null" Protocols, domains, and ports must match
<iframe id="container" name="container" src="frames/indexhtml"></iframe>�6�7
documentgetElementById("container")contentWindowdocument
Blocked a frame with origin "null" from accessing a frame with origin "null" Protocols, domains, and ports must match
undefined
windowframes["container"]document
Blocked a frame with origin "null" from accessing a frame with origin "null" Protocols, domains, and ports must match
undefined
虽然是相对路径,还是出现跨域的错误。
最后找到原因了,文件之间的 *** 作是按照跨域处理的,把文件放在web容器里,127001 去访问就好了IE 下 ddchildNodeslength=2 不用解释了
firefox 下 ddchildNodeslength=5; 这是为什么呢
<div id="dd">
----空白的文本节点 IE 下忽略了,firefox 按照标准来计算在内
<a href="#" id='a'>念网念网</a>
----空白的文本节点 IE 下忽略了
<a href="#" id='b'>念网念网</a>
----空白的文本节点 IE 下忽略了
</div>windowonload=function(){
var color=["orange","blue","green"];
var ci=0;
var dc=documentgetElementsByClassName("bg")[0];
setInterval(function(){
dcstylebackgroundColor=color[ci];
ci=(ci+1)%colorlength;
},1000);
}
1、用 childNodes 属性,按顺序取
实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。
//pId 待取节点父节点序号//cId 待取节点序号
function getXmlNodeValue(pId, cId) {var xmlDoc = new ActiveXObject("MicrosoftXMLDOM");
xmlDocasync = false;
xmlDocload("employeeInfoxml");
var nodes = xmlDocdocumentElementchildNodes[pId]childNodes[cId];return nodeschildNodes[0]text;
}
//调用方法:
alert(getXmlNodeValue(1, 2));
2、用 for 循环来取
实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。
//nodeValue 待取节点的所属节点值
function getXmlNodeValueFor(nodeValue){var xmlDoc;
try {
//创建一个 ie 支持的 XML 文档对象
xmlDoc = new ActiveXObject("MicrosoftXMLDOM");
}catch(e){
try{
//创建FireFox空的XML文档对象
xmlDoc=documentimplementationcreateDocument("","",null);
}catch(e){
alert(emessage);
return "";
}
}
xmlDocasync = false;
try {
xmlDocload("employeeInfoxml");
}catch(e){
alert(emessage);
return "";
}
var xd=xmlDocdocumentElementchildNodes;
if(xd==null)
return "";
var tempValue;
for(var i=0;i<xdlength;i++){
if(xd[i]childNodes[0]childNodes[0]nodeValue==nodeValue) tempValue=xd[i]childNodes[2]childNodes[0]nodeValue;
}
return tempValue;
}
//调用方法:
alert(getXmlNodeValueFor("王佳琳"));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)