新手求教:function最后为什么要return ture 不理解求指点

蓝with黑 2015-07-25 03:08:17
function prepareGallery(){
if(!document.getElementsByTagName) return false;
if(!document.getElementById) return false;
if(!document.getElementById("imagegallery")) return false;
var gallery=document.getElementById("imagegallery");
var links=gallery.getElementsByTagName("a");
for(var i=0;i<links.length;i++){
links[i].onclick=function(){
return !showPic(this);
}
}
}
function showPic(whichpic){
//检查id="placeholder",id="description"是否存在
if(!document.getElementById("placeholder")) return false;
var placeholder=document.getElementById("placeholder");
var source=whichpic.getAttribute("href");
if(placeholder.nodeName!="IMG") return false;
placeholder.setAttribute("src",source);
if(document.getElementById("description")){
var description=document.getElementById("description");
var img_text=whichpic.getAttribute("title")?whichpic.getAttribute("title"):" ";
if(description.firstChild.nodeType==3){
description.firstChild.nodeValue=img_text;
}
}
return true;
}
这里为什么要返回一个真,不理解,如果返回真,那前面的return !showPic(this);不就一直都是假了吗?求高手 指点
...全文
368 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝with黑 2015-07-28
  • 打赏
  • 举报
回复
引用 10 楼 zyb112211 的回复:
在showPic()这个函数中并非只是返回true,在return true 之上还有两个地方会返回false,如果这两个其中一个满足了条件,返回了false,不就取反为真了吗,所以不存在你说的会一直都是假
谢谢
顾小林 2015-07-27
  • 打赏
  • 举报
回复
那本书绝对是入门的经典之作,第一遍看不懂很正常,慢慢来,写着写着很多东西就懂了。加油
蓝with黑 2015-07-27
  • 打赏
  • 举报
回复
引用 6 楼 shen332401890 的回复:
JavaScript DOM编程艺术 你看的是这本书的那个demo吧,return !showPic(this); 表示 如果show成功,事件则不往下传递 你可以搜一下 js 事件传递
是的,我看了一半,这本书怎样? 我新手,没什么基础,有些地方不太好理解。
纯洁袜子 2015-07-27
  • 打赏
  • 举报
回复
在showPic()这个函数中并非只是返回true,在return true 之上还有两个地方会返回false,如果这两个其中一个满足了条件,返回了false,不就取反为真了吗,所以不存在你说的会一直都是假
KK3K2005 2015-07-27
  • 打赏
  • 举报
回复
function showPic(whichpic){ //检查id="placeholder",id="description"是否存在 if(!document.getElementById("placeholder")) return false; var placeholder=document.getElementById("placeholder"); var source=whichpic.getAttribute("href"); if(placeholder.nodeName!="IMG") return false; placeholder.setAttribute("src",source); if(document.getElementById("description")){ var description=document.getElementById("description"); var img_text=whichpic.getAttribute("title")?whichpic.getAttribute("title"):" "; if(description.firstChild.nodeType==3){ description.firstChild.nodeValue=img_text; } } return true; } 一种情况return false 一种情况return true
顾小林 2015-07-26
  • 打赏
  • 举报
回复
JavaScript DOM编程艺术 你看的是这本书的那个demo吧,return !showPic(this); 表示 如果show成功,事件则不往下传递 你可以搜一下 js 事件传递
阿狸Ahri 2015-07-25
  • 打赏
  • 举报
回复
引用 3 楼 qq_24380731 的回复:
[quote=引用 1 楼 jslang 的回复:] 当函数作为事件处理函数时,return true; 是允许事件的冒泡和默认行为,return false; 是阻止事件的冒泡和默认行为。 比如:表单的提交事件函数中,return true; 是允许表单的提交行为,return false; 是阻止表单的提交行为。
还是不懂,这里的return true是指whichPic(){}这个函数的返回值就是ture了吗? 那前面的函数中:for(var i=0;i<links.length;i++){ links[i].onclick=function(){ return !showPic(this); } 不就一直是 return false了吗?[/quote] 这条showPic(this)并不是一定返回 ture啊,showPic(this)里面不是有 两个if 返回false吗?哪里是一定返回真。 为什么要return ture上面已经说了
天际的海浪 2015-07-25
  • 打赏
  • 举报
回复
links[i].onclick=function(){这个才是真正的事件处理函数,只有这个函数的返回值才能影响事件。 whichPic()这个函数的返回值只是给上一层调用者传递数据而已
蓝with黑 2015-07-25
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
当函数作为事件处理函数时,return true; 是允许事件的冒泡和默认行为,return false; 是阻止事件的冒泡和默认行为。 比如:表单的提交事件函数中,return true; 是允许表单的提交行为,return false; 是阻止表单的提交行为。
还是不懂,这里的return true是指whichPic(){}这个函数的返回值就是ture了吗? 那前面的函数中:for(var i=0;i<links.length;i++){ links[i].onclick=function(){ return !showPic(this); } 不就一直是 return false了吗?
蓝with黑 2015-07-25
  • 打赏
  • 举报
回复
还是不懂,这里的return true是指whichPic(){}这个函数的返回值就是ture了吗? 那前面的函数中:for(var i=0;i<links.length;i++){ links[i].onclick=function(){ return !showPic(this); } 不就一直是 return false了吗?
天际的海浪 2015-07-25
  • 打赏
  • 举报
回复
当函数作为事件处理函数时,return true; 是允许事件的冒泡和默认行为,return false; 是阻止事件的冒泡和默认行为。 比如:表单的提交事件函数中,return true; 是允许表单的提交行为,return false; 是阻止表单的提交行为。

87,984

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧