鼠標點擊頁面中的任意標籤,alert該標籤的名稱和 js實現點擊標籤彈出其索引值

鼠標點擊頁面中的任意標籤,alert該標籤的名稱

方法一 :
在這裏我們可以利用冒泡解決該問題

 document.onclick = function(e){
    var e=(e||event);
    var o=e["target"]||e["srcElement"];
    alert(o.tagName.toLowerCase()); 
}

方法二:
進行遍歷

  <!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>遍歷所有標籤進行添加click事件</title>
</head>
<body>
    <div class="alert">div</div>
    <a href="javascript:;" class='alert'>a</a>
    <b class="hel">b</b>
    <script>
            function getTagName(){
    return document.getElementsByTagName("*");
        }

    function stopPropagation(e) {  
              e = e || window.event;  
            if(e.stopPropagation) { //W3C阻止冒泡方法  
              e.stopPropagation();  
            } else {  
           e.cancelBubble = true; //IE阻止冒泡方法  
          }  
}
        window.onload=function(){
            var tagObj=getTagName();
            console.log("nihaofdfdfdfdfdfdf");
            for(var i=0,max=tagObj.length;i<max;i++){
                tagObj[i].onclick=function(e){

                    stopPropagation(e);
                    alert(this.tagName);
                }
            }
        }
    </script>
</body>
</html>

js實現點擊

  • 標籤彈出其索引值
  • <html>  
    <head>  
    <style>  
    li{  
        width:50px;  
        height:30px;  
        margin:5px;  
        float:left;  
        text-align: center;  
        line-height: 30px;  
        border-radius:4px;  
        list-style-type: none;  
        background: red;  
        cursor:pointer;  
    }  
    </style>  
    <script>  
    window.onload=function(){  
    //此處有三種方法  
    };  
    </script>  
    <head>  
            <body>  
                <div>  
                    <ul>  
                        <li>列表1</li>  
                        <li>列表2</li>  
                        <li>列表3</li>  
                        <li>列表4</li>  
                        <li>列表5</li>  
                    </ul>           
                </div>  
    
            </body>  
    </html>  

    第一種:

    var oli=document.getElementsByTagName('li');  
        for(var i=0; i<oli.length;i++)  
        {     
            oli[i].index=i;  
            oli[i].onclick=function(){  
            alert('你點擊的列表的下標是:'+this.index);//列表下標從0開始  
                };  
        }  

    除此之外還有別的方法:

    1)通過閉包的方法

    var oli=document.getElementsByTagName('li');  
            for(var i=0;i<oli.length;i++)  
            {  
                oli[i].onclick=(function(n){  
                    return function(){  
                        alert(n);  
                    }  
                })(i)  
            }  

    或者:
    2)

    var oli=document.getElementsByTagName('li');  
            for(var i=0;i<oli.length;i++)  
            {  
                (function(n){  
                    oli[i].onclick=function(){  
                        alert(n);  
                    }  
                })(i)  
            }  

    或者
    3)

    var ul = document.getElementsByTagName("ul")[0];
        var li = ul.getElementsByTagName("li");
    
        function foo() {
            for (var i = 0; i < li.length; i++) {
                li[i].onclick = (function (i) {
                   return function(){
                       alert(i);
                   }
                })(i);
            }
        }
    foo();

    或者
    4)使用ES6中的新特性let來聲明變量

    用let來聲明的變量將具有塊級作用域,很明顯可以達到要求,不過需要注意的是得加個’use strict’(使用嚴格模式)纔會生效

    function foo() {'use strict'
            for (let i = 0; i < li.length; i++) {
                li[i].onclick = function(){
                       alert(i);
                   }
            }
        }
    foo();

    或者
    5)事件委託

    var ul = document.getElementsByTagName("ul")[0];
    var li = ul.getElementsByTagName("li");
    ul.addEventListener('click',function(ev){
        var ev = ev||window.event;
        var target = ev.target||ev.srcElement;
        for( var i=0;i<li.length;i++){
            if( li[i] == target){
                alert(i);
            }
        }
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章