Python學習——JS基本語法(二)——DOM操作

DOM操作

  • DOM,Document Object Model,文檔對象模型
  • 將HTML中的元素當做JS中的對象進行操作,稱爲DOM操作
  • window對象表示瀏覽器中打開的窗口,document對象整個文檔
  • DOM操作核心:找到對象、添加事件、修改樣式、……
  • 在JS中樣式的名字採用的是小駝峯的命名規則,如:backgroundColor
  • console.log可以將數據輸出到控制檯,不會影響頁面內容

查找元素

  • getElementById:根據ID,獲取的是一個元素
  • getElementsByClassName:根據class屬性查找元素,返回的是數組
  • getElementsByTagName:根據標籤名查找元素,返回的是數組
  • getElementsByName:根據name屬性查找元素,返回的是數組

JS事件

  • onclick:單擊
  • ondbclick:雙擊
  • onfocus:獲取焦點
  • onblur:失去焦點
  • onmouseover:鼠標移入
  • onmouseout:鼠標移出

定時器

  • 說明:所謂定時器就是在指定的時間做指定的事情
  • 分類:
    • 一次性定時器:設置一個時間,時間一到,做指定的事情,之後就銷燬了。
      • 設置:var timer = setTimeout(函數,時間),時間單位是毫秒
      • 清除定時器:clearTimeout(timer)
    • 週期性定時器:設置一個時間間隔,時間一到,做指定的事情,然後重新計時
      • 設置:var timer = setInterval(函數,時間),時間單位是毫秒
      • 清除:clearInterval(timer)

獲取樣式

  • 兼容獲取方式

    var oDiv=document.getElementsByTagName('div')[0]
            //這種方式只能獲取行內樣式
            //alert(oDiv.style.width)
            //低級瀏覽器
            //alert(oDiv.currentStyle['width'])
            //高級瀏覽器
            //alert(getComputedStyle(oDiv,null)['width'])
            alert(getStyle(oDiv,'width'))
            
            //封裝兼容獲取樣式的方法
            function getStyle(obj,attr)
            {
                if (typeof(obj.currentStyle)=='undefined'){
                    return getComputedStyle(obj,null)[attr]
                }else{
                    return obj.currentStyle[attr]
                }
            }

     

window對象

  • 時間:

    • onload:頁面加載完成(包括資源)

    • onscroll:頁面滾動

    • onresize:窗口尺寸發生改變

  • 屬性:

    • innerWidth:寬度,innerHeight:高度;包括滾動條

    • document:文檔對象

      • document.documentElement.clientWidth:淨寬度

      • document.documentElement.clientHeight:淨高度

      • document.documentElement.scrollTop:向上滾動的距離

      • document.documentElement.scrollLeft:向左滾動的距離

      • 說明:以上是H5標準的獲取方式,非H5標準需將documentElement改爲body

效果展示

  • 飄舞的小球

    • 完善:當鼠標放到小球上停止飄,離開後繼續飄

查找元素

  • 示例:

<script>
        var wtms=document.getElementById('wtms')
        //上一個同胞元素
        var prev=wtms.previousElementSibling||wtms.previousSibling
        //下一個同胞元素
        var next=wtms.nextElementSibling||wtms.nextSibling
        //父級元素
        var parent=wtms.parentNode
        //獲取第一個子元素
        var first=parent.firstElementChild||parent.firstChild
        //獲取最後一個子元素
        var last=parent.lastElementChild||parent.lastChild
        
        //在文檔中連續查找
        var uncle=wtms.parentNode.nextElementSibling
        alert(uncle.innerText)
        
    </script>

創建與刪除

  • 創建元素:div=document.createElement('div')

  • 添加元素:div.appendChild(button)

  • 刪除元素:grand.removeChild(parent)

事件冒泡

  • 說明:當下層元素和上層元素支持同一事件,當上層事件觸發時,下層事件也會觸發,這種事件稱爲事件冒泡

  • 取消事件冒泡:ev.cancelBubble=true

事件綁定

  • 說明:一個事件觸發時,想要同時調用多個處理函數,直接設置後面的覆蓋前面的,可以通過事件綁定解決。

  • 示例:

var div=document.getElementsByTagName('div')[0]
        //傳統的方式不行(後面的設置會覆蓋前面的)
//      div.οnclick=giveRed
//      dv.οnclick=giveGreen
​
        //添加事件綁定
//      div.addEventListener('click',giveRed,false)
//      div.addEventListener('click',giveGreen,false)
        
        addBind(div,'click',giveRed)
        addBind(div,'click',giveGreen)
        
        //移除事件綁定
//      div.removeEventListener('click',giveRed,false)
        delBind(div,'click',giveRed)
        
        
        function giveRed(){
            alert('紅色')
        }
        
        function giveGreen(){
            alert('綠色')
        }
        
        //兼容綁定事件
        function addBind(obj,ev,func)
        {
            if(obj.addEventListener){
                //高級瀏覽器
                obj.addEventListener(ev,func,false)
            }else{
                //低級瀏覽器
                obj.attachEvent('on'+ev,func)
            }
        }
        //兼容取消綁定
        function delBind(obj,ev,func)
        {
            if(obj.removeEventListener){
                obj.removeEventListener(ev,func,false)
            }else{
                obj.DataContainerEvent('on'+ev,func)
            }
        }

事件源元素

  • 說明:就是根據事件獲取事件發生的元素,也就是該事件發生在哪個元素上。

  • 示例:

function change(e)
        {
            var ev =e||event
            //根據事件獲取發送的元素
            var obj=ev.srcElement
            //修改樣式
            obj.style.background='green'
        }

點擊位置

  • 說明:點擊事件觸發時,鼠標距離窗口的偏移位置

  • 示例:

function dian(e)
        {
            var ev=e||event
            //點擊位置在窗口的座標
            console.log(ev.clientX+'x'+ev.clientY)
        }

鍵盤事件

  • onkeydown:鍵盤按下事件

    • 按鍵的ASCII:ev.keyCode

    • 是否按下了特定的組合按鈕

    if(ev.altKey==true){
                    console.log('您按下了alt鍵')
                }else if(ev.ctrlKey==true){
                    console.log('您按下了ctrl鍵')
                }else if(ev.shiftKey==true){
                    console.log('您按下了shift鍵')
                }

     

禁用右鍵

  • 示例:

document.οncοntextmenu=function(){
            //返回false時即可禁用右鍵,菜單不會顯示
            return false
        }

控制跳轉

  • 說明:a標籤的onclick事件的返回值可以決定是否跳轉,返回true可以跳轉,返回false不能跳轉

  • 示例:

<a href="http://www.baidu.com" οnclick="return tiao()">百度一下</a>
​
<script type="text/javascript">
        function tiao(){
            //邏輯處理
            //返回false就無法跳轉
            return false
        }
    </script>

各種彈框

  • alert:警告框

  • confirm:確認框,點擊確定返回true,點擊取消返回false

  • prompt:輸入框,點擊確定返回輸入內容,取消返回null

BOM操作

  • 說明:將瀏覽器當做對象(window)一樣進行操作,稱爲BOM操作

  • 使用:

    • open:打開新頁面

    • close:關閉使用JS創建的窗口

    • history:歷史記錄跳轉

      • back:向後跳轉一個頁面

      • go:可以指定跳轉,正數向前跳,負數向後跳

    • location:

      • href:指定當前窗口的url,修改它可以直接實現頁面跳轉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章