《JS DOM编程艺术 第2版》第6章问题, return !showpic(this); 为什么会无效?

《Javascript DOM》(第2版)第6章的一个demo
JS代码:

<script>
            function prepareGallery()
            {
                if(!document.getElementById("gallery"))return false;
                if(!document.getElementsByTagName)return false;
                var gallery=document.getElementById("gallery");
                var links=gallery.getElementsByTagName("a");
                for(i=0;i<links.length;i++)
                {
                    links[i].onclick=function()
                    {
                        return !showpic(this);
                    }
                }
            }
            
            function showpic(x)
            {
                var changepic=document.getElementById("placeholder");
                var source=x.getAttribute("href");
                changepic.setAttribute("src",source);
                var description=document.getElementById("description");
                var text=x.firstChild.nodeValue;
                description.firstChild.nodeValue=text;
            }
            
            function addLoadEvent(func){
                var oldonload=window.onload;
                if (typeof window.onload!='function')
                {
                    window.onload=func;
                }
                else{
                    window.onload=function()
                    {
                        oldonload();
                        func();
                    }
                }
            }
            addLoadEvent(prepareGallery);
        </script>

HTML代码:

<h1>标题</h1>
        <ul id="gallery">
            <li>
                <a href="img/摆渡.jpg" title="摆渡人" >摆渡人</a> 
            </li>
            <li>
                <a href="img/城市.png" title="洛阳城" >洛阳城</a>
            </li>
            <li>
                <a href="img/守卫.jpg" title="地狱口" >地狱口</a>
            </li>
            <li>
                <a href="img/海怪.jpg" title="海上龙" >海上龙</a>
            </li>
        </ul>
        <p id="description">选择一张图片</p>
        <img id="placeholder" src="img/透明.png" alt="占位图"/>

该例是要实现点击链接,在当前页面打开图片。
本来,写成:

links[i].onclick=function()
{
    showpic(this);
    return false;
}

是没问题了,可是按照书上改成return !showpic(this);
就无法实现在当前页面打开
请问错误在哪里?
多谢多谢多谢回答O(∩_∩)O

阅读 2.4k
1 个回答

!showpic(this)返回的是true

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题