各位大哥大姐,为什么js中的全局变量用函数赋不了值啊

不志而为 2017-08-02 11:13:34
<script type="text/javascript">
var typeId = null; //这里定义的一个全局变量
function setId(a){
typeId = a
alert(typeId) //这可以成功地显示正确的值,按理说这时全局变量应该就同值成功了呀
}

function goto(param){
alert(typeId) //但是这里总是null ,为什么?这说明全局变量还是没值的。。。
var url = "${pageContext.request.contextPath }/food?method=foodDetail¤tPage="+param+"&foodTypeId="+typeId
alert(url)
document.location.href=url
}
</script>
...全文
455 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxfstyle 2018-07-31
  • 打赏
  • 举报
回复
var typeId = null;
function setId(){
typeId = 'sa'
console.log(typeId,1)
}

function goto(){
setId()
console.log(typeId,2)
var url = typeId
console.log(url,3)
}
goto()
这样才能拿到!
不志而为 2017-08-03
  • 打赏
  • 举报
回复
我其实要实现的目的,是在点击这个《a》标签的时候,将foodType.id设置到域中, 不知怎么做。 <a onclick="setId(${foodType.id})" href="${pageContext.request.contextPath }/food?method=foodDetail&foodTypeId=${foodType.id}">${foodType.typeName }</a>
不志而为 2017-08-03
  • 打赏
  • 举报
回复
引用 1 楼 yexianshow 的回复:
在运行goto前,必须先运行一遍setId
可是大哥们,我调用了呀,setId函数是与一个<a>标签中的onclick 属性绑定的。goto函数是另一个<a>标签叫下一页。 我重新编辑了一下。 <script type="text/javascript"> var typeId = null; function setId(a){ typeId = a alert(typeId) } function goto(param){ alert(typeId) //先调用的setId,后执行的goto ,我想是不是先点的onclick已经把值赋上了,但是稍后已经刷新成新的页面了,所以typeId又没有值了。 var url = "${pageContext.request.contextPath }/food?method=foodDetail¤tPage="+param+"&foodTypeId="+typeId alert(url) document.location.href=url } </script> 这部分是分页(后点击的) <div id="btn"> 当前${pb.currentPage }/${pb.totalPage }页   <a href="javascript:goto(1)">首页</a> <a href="javascript:goto(${pb.currentPage-1 })">上一页</a> <a href="javascript:goto(${pb.currentPage+1 })">下一页</a> <a href="javascript:goto(${pb.totalPage })">尾页</a> </div> ------------------------------------------------------------ 这部分是foreach遍历,先点击的。 <c:forEach var="foodType" items="${requestScope.listFoodType}"> <li> <a onclick="setId(${foodType.id})" href="${pageContext.request.contextPath }/food?method=foodDetail&foodTypeId=${foodType.id}">${foodType.typeName }</a> </li> </c:forEach>
当作看不见 2017-08-03
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
setId晚于你的goto执行了,都没有设置值
BoBo 模拟器的那个我也要
_林小夕 2017-08-03
  • 打赏
  • 举报
回复
楼上说的对,只看到你定义的了函数,没见你调用呀,调用了setId才会赋a的值给typeId
  • 打赏
  • 举报
回复
setId晚于你的goto执行了,都没有设置值
yexianshow 2017-08-03
  • 打赏
  • 举报
回复
在运行goto前,必须先运行一遍setId

87,993

社区成员

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

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