问答详情
源自:7-3 编程练习

为什么不使用this就运行不了?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

    <style type="text/css">

        stars {

            cursor: pointer;

        }

    </style>

    <script type="text/javascript">

        window.onload = function () {

            // 获取元素

            var stars = document.getElementById('stars').getElementsByTagName('stars');

            var ret = document.getElementById('ret');


            //定义getStar函数

            function getStar(n){

                for(var i=0;i<stars.length;i++){

                    if(i<=n-1){

                        stars[i].style.color = "red";

                    }else{

                        stars[i].style.color = "";                       

                    }

                }

                ret.innerHTML="这里有"+n+"个猩猩";

            }

            


            // 每个星星节点的点击事件

            for(var i=0;i<stars.length;i++)

                stars[i].onclick = function(){

                    var starnum=this.getAttribute('star');

                //改成stars[i].getAttribute()就报错,为什么?

                    getStar(starnum);

                }

            }

        }

    </script>

</head>

<body>

<div id="stars">

    <stars star="1">★</stars>

    <stars star="2">★</stars>

    <stars star="3">★</stars>

    <stars star="4">★</stars>

    <stars star="5">★</stars>

</div>

<div id="ret"></div>

</body>

</html>


提问者:12只怕有心人 2016-12-26 16:38

个回答

  • 丨怪咖
    2017-01-04 19:16:02

    事件是给stars数组绑定的,就需要用this来获取当前点击的星,你改成stars[i].getAttribute()了怎么知道点的是哪个星?