为了账号安全,请及时绑定邮箱和手机立即绑定

onclick优化问题

onclick优化问题

啊啊啊啊123 2016-08-26 20:01:19
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <style type="text/css"> #box{ width: 300px; height: 300px; } </style> <script type="text/javascript"> window.onload = function () { var ull =document.getElementById('ull'); var as =ull.getElementsByTagName('a'); for (var i = 0; i < as.length; i++) {   as[i].onclick =function () {      pic(this);      return false;   }  } } function pic(x) { var herfs = x.getAttribute('href'); var imgs = document.getElementById('box'); imgs.setAttribute('src', herfs); var ti = document.getElementById('ti'); var text = x.getAttribute('title'); ti.innerHTML = text; } </script> <body> <ul id="ull"> <li><a href="http://h.hiphotos.baidu.com/zhidao/pic/item/6d81800a19d8bc3ed69473cb848ba61ea8d34516.jpg" title="a">go1</a></li> <li><a href="http://www.33lc.com/article/UploadPic/2012-8/201282413335761587.jpg" title="b">go2</a></li> </ul> <img src="http://img.boqiicdn.com/Data/BK/A/1607/25/imagick14651469425193_y.jpg" alt="pic" id="box"> <p id="ti">title</p> </body> </html>点击时调用pic(this),return false取消跳转。没问题,书上说优化onclick,如下                    as[i].onclick =function () { if (pic(this)) { return false; } else { return true; } }我觉也没问题成立链接不跳转,不成立跳转。可运行和之前的不一样,变成跳转了,为什么?
查看完整描述

2 回答

?
hahhhha

TA贡献50条经验 获得超32个赞

pic方法需要return返回值,才能判断。

window.onload = function () {
var ull =document.getElementById('ull');
var as =ull.getElementsByTagName('a');
for (var i = 0; i < as.length; i++) {
  as[i].onclick =function () {
    pic(this); 
  }
 }
}
 
function pic(x) {
  return false;
  var herfs = x.getAttribute('href');
  var imgs = document.getElementById('box');
  imgs.setAttribute('src', herfs);
  var ti = document.getElementById('ti');
  var text = x.getAttribute('title');
  ti.innerHTML = text;
}


查看完整回答
反对 回复 2017-03-13
?
stone310

TA贡献361条经验 获得超191个赞

 if (pic(this)) 这么写,相当于if(undefined),因为pic(this)是执行函数的意思,而你这个函数并没有返回值,所以会undefind,在if判断里也就是false;因此函数后面不能加括号,只调用函数名,if(pic),除非你的函数最后有返回值(return xxx),就会返回你的返回值

查看完整回答
反对 回复 2016-08-26
  • 啊啊啊啊123
    啊啊啊啊123
    额... 改成if(pic)点击没反应了
  • stone310
    stone310
    当然是没反应啊,这种写法就是 条件是pic为true,就执行return false,当然没反应了,不知道你要什么效果的?
  • 2 回答
  • 1 关注
  • 1383 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信