javascript dom编程的艺术里的代码片段问题。

第二个function是怎么理解?是不是如果没(node.type==1)不为真然后就开始做下面一个if语句(就开始查找下面一个元素)然后就开始调用一直递归。刚一存回去就... 第二个function是怎么理解?是不是如果没(node.type==1)不为真然后就开始做下面一个if语句(就开始查找下面一个元素)然后就开始调用一直递归。刚一存回去就被递归,是不是一直都没有机会执行添加样式的哪两句语句?(elemt.style.font....)。就算能执行到,它的值难道不会因为递归第二次return给覆盖了,最后还return了一个空值,不管怎么做它都会把那个空值赋个elem吗,一个空元素添加样式? 另外能不能帮我顺便的注释下每一句。谢谢 展开
 我来答
imqzc
2017-05-31 · TA获得超过3862个赞
知道大有可为答主
回答量:2499
采纳率:82%
帮助的人:391万
展开全部
/*
  这段代码很好理解,就是查找每个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
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式