DOM-1 DOM初探、JS对象、XML、幻灯片案例展示

DOM

  • DOM —— Document Object Model(文档对象模型)
  • DOM 对象 → 宿主对象(是浏览器提供的)
  • 通过浏览器提供的方法表示或操作HTML和XML
  • 不能操作css
  • 标签:<></>对
  • 元素:<>及内部的内容,getElementsByTagName获取的是元素,是类数组,没有数组方法,但能通过下标访问

JavaScript 3种对象

  1. 本地对象(Native Object)
    Object Function Array String Number Boolean Error
    Date RegExp
  2. 内置对象(Built-in Object)
    Global(虚拟的,全局对象的总称:如isNaN、Number|decodeURI)
    Global属性:如Infinity NaN undefined
    Math
    本地对象和内置对象都是ES的内容对象
  3. 宿主对象 (Host Object)
    执行JS脚本的环境提供的对象,又称浏览器对象,兼容性问题
    浏览器对象window(BOM)和document(DOM)
    DOM包含于BOM概念,有W3C标准
  • 谁调用this就指向那个元素,注意,如果使用了箭头函数,this将指向上下文(window)
<body>
    <div>123</div>
    <div>456</div>
    <div>789</div>
    <script type="text/javascript">
        var doms = document.getElementsByTagName('div')
        for (var i = 0; i < doms.length; i++) {
            doms[i].onclick = function () {
                console.log(this.innerText)
            }
        }
    </script>
</body>

练习

幻灯片功能 gitee

// 都打印6,因为for循环在绑定click时,并没有立即执行
// 等绑定完,在循环外部触发时,拿到的i是退出循环的结果
var thumbItem = document.getElementsByClassName('thumb-item')
for (var i = 0; i < thumbItem.length; i++) {
    thumbItem[i].onclick = function () {
        console.log(i)
    }
}
  • js1
var thumbItem = document.getElementsByClassName('thumb-item');
var sliderItem = document.getElementsByClassName('slider-item');
for (var i = 0; i < thumbItem.length; i++) {
    (function (curI) {
        thumbItem[curI].onclick = function () {
            for (var j = 0; j < thumbItem.length; j++) {
                thumbItem[j].className = "thumb-item"
                sliderItem[j].className = "slider-item"
            }
            this.className += " cur"
            sliderItem[curI].className += " active"
        }
    })(i)
}
  • js2
; (function () {
    var Slider = function (opt) {
        this.slider = document.getElementsByClassName(opt.sliderItem);
        this.thumbs = document.getElementsByClassName(opt.thumbItem);
        var _this = this
        for (var i = 0; i < this.thumbs.length; i++) {
            (function (curI) {
                _this.thumbs[curI].onclick = function () {
                    for (var j = 0; j < _this.thumbs.length; j++) {
                        _this.thumbs[j].className = "thumb-item"
                        _this.slider[j].className = "slider-item"
                    }
                    this.className += " cur"
                    _this.slider[curI].className += " active"
                }
            })(i)
        }
    }
    Slider.prototype = {}
    window.Slider = Slider
})()
  • js3
; (function () {
    var Slider = function (opt) {
        this.slider = document.getElementsByClassName(opt.sliderItem);
        this.thumbs = document.getElementsByClassName(opt.thumbItem);
        this.bindClick()
    }
    Slider.prototype = {
        bindClick: function () {
            var slider = this.slider,
                thumbs = this.thumbs;
            for (var i = 0; i < thumbs.length; i++) {
                (function (curI) {
                    thumbs[curI].onclick = function () {
                        for (var j = 0; j < thumbs.length; j++) {
                            thumbs[j].className = "thumb-item"
                            slider[j].className = "slider-item"
                        }
                        this.className += " cur"
                        slider[curI].className += " active"
                    }
                })(i)
            }
        }
    }
    window.Slider = Slider
})()
  • html
<script type="text/javascript">
    var slider = new Slider({
        sliderItem: 'slider-item',
        thumbItem: 'thumb-item'
    })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值