关于js两条语句的差异

部分代码

<script>

 function opening(site) {

                window.open(site, "newpage", "width=800;height=500");

            }


  window.onload = openNew;

            function openNew() {

                var links = document.getElementsByTagName("a");

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

                {

                    if (links[i].getAttribute("class") === "openNewWeb")

                    {

                        links[i].onclick = function () {

                           // var urll = links[i].getAttribute("href");

                            //opening(urll);

                            opening(this.getAttribute("href"));//这句和上面注释掉的两句差异在哪?为什么点击连接后该句打开了新窗口而上面两句没有?

                            return false;

                        };

                    }

  }

            }

        </script>


 <a class="openNewWeb" href="http://www.cctv.com/" >click here to open CCTV!</a>

 <a class="openNewWeb" href="http://www.people.com.cn/" >click here to open People!</a>


Will_木
浏览 1307回答 1
1回答

磁单极

你那上面的两句语法有问题,这里的links[i].getAttribute("href");注意注意,这个links[i]是undefined,所以js报错,导致后面的语句根本就没有执行,所以他会执行底下的超链接在原来的页面上打开页面,没有执行opening function,所以没有打开新的窗口你可以在如图的位置加上一个alert(typeof link[i])验证一下是不是undefined,至于为什么,你可以再想一想,或者你把上面的link[i]换成this效果和底下的一句是一样的。
打开App,查看更多内容
随时随地看视频慕课网APP