javascript dom编程的艺术里的代码片段问题。
第二个function是怎么理解?是不是如果没(node.type==1)不为真然后就开始做下面一个if语句(就开始查找下面一个元素)然后就开始调用一直递归。刚一存回去就...
第二个function是怎么理解?是不是如果没(node.type==1)不为真然后就开始做下面一个if语句(就开始查找下面一个元素)然后就开始调用一直递归。刚一存回去就被递归,是不是一直都没有机会执行添加样式的哪两句语句?(elemt.style.font....)。就算能执行到,它的值难道不会因为递归第二次return给覆盖了,最后还return了一个空值,不管怎么做它都会把那个空值赋个elem吗,一个空元素添加样式? 另外能不能帮我顺便的注释下每一句。谢谢
展开
1个回答
展开全部
/*
这段代码很好理解,就是查找每个h1标签后面的普通元素,若找到就把第一个设置成黑体字,然后继续查找第二个h1后面的元素,依此类推。每个h1后面只设置第一个元素,不管它后面跟有多少个。
对null元素设置样式不会出错。
*/
function styleHeaderSiblings() {
if ( ! document.getElementsByTagName ) return false; // 检查系统中有没这个方法以免下面执行出错。一般浏览器都支持的。
var headers = document.getElementsByTagName("h1"); // 找出全部h1标签元素
for ( var i = 0; i<headers.length; i++ ) { // 开始循环检查找到的各h1元素
var elem = getNextElement(headers[i].nextSibling); // 找出位于h1后面的同级节点
elem.style.fontWeight = "bold"; // 找到后设置字体属性:加黑字体
elem.style.fontSize = "1.2em"; // 找到后设置字体属性:设置字号
}
}
function getNextElement(node) { // 查找下一个元素
if ( node.nodeType == 1 ) { // 判断该节点是否为元素节点
return node; // 若是立即返回此元素,不管后面有没有都不用再找了
}
if ( node.nextSibling ) { // 若不是元素节点,则继续查找后面的节点
return getNextElement(node.nextSibling); // 递归调用本函数以找出全部
}
return null; // 啥也没找到,结束查找,返回null
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询