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

急!关于一个后退按钮函数中的三个问题,求大神解答!!!

急!关于一个后退按钮函数中的三个问题,求大神解答!!!

Ani_fan 2017-02-09 10:42:34
HTML结构:<div onclick="xxx()"><section id="wrapper"><div class="back" onClick="backpage(this)"></div></section></div>JS代码:function backpage(obj,e){ window.event? window.event.cancelBubble = true : e.stopPropagation(); obj.parentNode.style.opacity="0"; obj.parentNode.style.display='none'; window.history.back(-1);}--------------------------------------------------------------第一个问题是在firefox中会报错,说函数内容第一排的e未定义;                     而在其它浏览器中正常,这是为什么?第二个问题是如果写成 setTimeout("obj.parentNode.style.opacity=0",100);                     执行的时候会报错不能将style用在未定义的对象上;                     为什么会这样?第三个问题是在IE中 window.history.back(-1) 只有在鼠标离开浏览器可视窗口区域时才会执行;                     如何让他立马执行?小弟刚接触JS,有许多不懂的东西,求大神解答!!!----------------------------------------------------------------第一个问题已解决,需要用一个函数来得到点击事件,然后赋值给e第二个问题已解决,setTimeout的执行环境是window第三个问题已解决,这是IE的设定
查看完整描述

1 回答

?
习惯受伤

TA贡献885条经验 获得超1144个赞

问题有点多,其实后退功能很简单,onclick="javascript:history.back()"即可。问题主要是:1,history.back函数里不用给值。而换成history.go的时候,-1就是后退。2,setTimeOut函数第一个参数是一个function,而不是字符串。
查看完整回答
1 反对 回复 2017-02-09
  • Ani_fan
    Ani_fan
    不对啊,setTimeout第一个参数就是代码字符串啊,书上和w3c都是这样写的,setTimeout可以自动将字符串转换为代码
  • 习惯受伤
    习惯受伤
    嗯嗯刚查了是这么说的“可执行的代码字符串”,但是为了自己清晰,使用function吧,你的obj对象可能没有parentNode这个属性,你可以验证一下。
  • Ani_fan
    Ani_fan
    抱歉,我描述错了。用了setTimeout后他说的是obj未定义,我在setTimeout外面console.log(obj)可以完美显示,但在里面用会显示未定义,所以我猜测这是不是定义域的问题,于是在里面赋值a=obj让他变成全局变量,结果成功了。上网查了一下原来是window.setTimeout()内置函数的原因,计时器挂起的时候执行环境是window,所以拿不到obj变量。感谢你的帮助!
点击展开后面1
  • 1 回答
  • 0 关注
  • 1321 浏览
慕课专栏
更多

添加回答

举报

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