js遇到一些问题,请看代码



 <html>
<head>
</head>

<body>

    <a href="img/1.jpg" title='1pic' >1pic</a><br>
    <a href="img/2.jpg" title='2pic' >2pic</a><br>
    <a href="img/3.jpg" title='3pic' >3pic</a><br>

</body>


<

script>

    function prepareGallery(){
        //if(!document.getElementsByTagName) return false;
        //if(!document.getElmentById) return false;
        var gallery = document.getElementsByTagName('a');
        for(var i=0; i<gallery.length; i++){
            gallery[i].onclick = function(){
                alert(this);
                return false;
            }
        }
    }

window.onload = prepareGallery;
</script>
</html>

本意是html加载完毕之后自动运行js代码,给每个a标签加上onclick事件。运行正常
但是如果把prepareGallery函数里2行注释的代码释放,则运行效果是js代码失效,点击a链接会直接跳转相关图片地址,为什么?

问题2:


 <html>
<head>
    <title></title>
</head>
<body>
    <form id='sel'>
        <select name='province'></select>
        <select name='city'></select>
        <select name='shop'></select>
    </form>
</body>


<script type="text/javascript">
    var province = document.getElementsByName('province');
    // console.log(province);
    province.onclick = function() {alert(99)}
}

window.onload = changeTest;

</script>


</html>

这个当我点击name名为province的select元素时,为什么没有弹出99?

web前端开发 JavaScript

过气音游残疾人 8 years, 11 months ago

//if(!document.getElmentById) return false; ---- 拼写错误;

var province = document.getElementsByName('province'); ---- 函数名都说明获取的的是Elements(复数)

Debut answered 8 years, 11 months ago

以上帮你解答了

千叶橙橙子 answered 8 years, 11 months ago

  1. 不能给 getElementsByName 返回的个 NodeList 集合绑定的 onclick 事件。

参考:
Document.getElementsByName()

protect answered 8 years, 11 months ago

注释的第二行 getElmentById 少了一个字母 e 。所以 !document.getElmentById true

roxas answered 8 years, 11 months ago

问题二:


 var province = document.getElementsByName('province');

你的province得到的是一个集合。
你看getElementsByName里的 Elements 是复数(带s),所以获取到的不是单个对象,而是多个对象。
所以下面应该写成


 province[0].onclick=function(){}

天使立华奏 answered 8 years, 11 months ago

Your Answer