js基础--------dom

节点类型

节点.nodeType 节点类型

节点.nodeValue 节点的值

节点.nodeName 节点的名字

节点.atrributes 节点的属性 类似数组

节点.childNodes 节点的所有子节点 类似数组

 

 

domReady

浏览器是通过渲染引擎来将html标签变成节点的,默认情况 渲染引擎可以渲染html xml 和图片,通过插件可以显示其他类型的文档

渲染:浏览器把请求出来的html内容显示出来的过程

 

window.onload: 浏览器绘制完dom节点,并且页面上所有资源加载完毕之后才执行里面的代码,但若外部资源如图片很多时,请求很耗时,可能出现dom加载完毕,但是依旧需要等待外部资源加载完毕才能执行js代码的情况,故外部资源多时不适用window.onload

DOMContentLoaded 当dom加载完毕就可以执行DOMContentLoaded里的方法 但ie有的版本不兼容,但是有hack方法能够解决

未完待续。。。。。。。。。。。。。。。

=============================

类似jq的domready实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        function myReady(fn) {
            // 对于现代浏览器,对DOMContentLoaded事件的处理采用标准的事件绑定方式
            if(document.addEventListener) {
                // 通过能力检测浏览器
                document.addEventListener("DOMContentLoaded", fn, false);  //fakse表示在冒泡阶段捕获
            } else {
                IEDOMContentLoaded(fn);
            }
            // ie模拟DOMContentLoaded
            function IEDOMContentLoaded(fn) {
                var d = window.document;
                var done = false;
                // 只执行一次用户的毁掉函数   init()
                var init = function() {
                    if(!done) {
                        done = true;
                        fn();
                    }
                };
                (function() {
                    try {
                        // DOM树未创建完之前调用doScroll会抛出错误
                        d.documentElement.doScroll('left');
                    } catch(e) {
                        // 延迟再试一次
                        setTimeout(arguments.callee, 50);
                        // 调用自身
                        return;
                    }
                    // 没有错误表示DOM树创建完毕,然后马上执行回调
                    init();
                })()
                // 监听document加载状态
                d.onreadystatechange = function() {
                    // 如果用户是在domReady之后绑定的函数,立马执行
                    if(d.readyState == 'complete') {
                        d.onreadystatechange = null;
                        init();
                    }
                }
            }
        }
    </script>
</body>
</html>

argument为函数内部对象,包含传入函数的所有参数,arguments.callee代表函数名,多用于递归调用,在哪个函数中运行,它就代表哪个函数,一般在匿名函数中,在匿名函数中有时需要自己调用自己,但是由于是匿名函数,没有名字,所以可以用arguments.callee来代替匿名的函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值