js全局变量在方法中赋值后返回undefined

cksd1001 2011-08-22 12:11:47
定义了timeStart,timeEnd两个全局变量,可在方法中赋值时只在方法内部起了作用,最后外部调用仍未undefined,请问哪里出现了错误,该怎样修改?
主要的代码如下:
<html>
<head>
</head>
<body>
<%

def reportName = params.name;
def template = params.template;
def dataModel = params.dataModel;

%>
<div id="container"></div>

<table>
<tr><td>
起始日期:<input type="text" name="startDate" id="startDate" autocomplete="off" size="30" value="" />
</td></tr>
<tr><td>
结束日期:<input type="text" name="endDate" id="endDate" autocomplete="off" size="30" value="" />
</td></tr>
<tr>
<td>
请选择报表的格式:
</td>
</tr>
</table>
<div id="cal1Container"></div>
<script type="text/javascript">
(function() {
var timeStart;
var timeEnd;


var init = function() {
cal1 = new YAHOO.widget.Calendar("cal1","cal1Container");
cal1.selectEvent.subscribe(getDate, cal1, true);
cal1.renderEvent.subscribe(setupListeners, cal1, true);
Event.addListener(['startDate', 'endDate'], 'focus', showCal);
Event.addListener(['startDate', 'endDate'], 'blur', hideCal);
cal1.render();
hideCal();
}


var getDate = function() {
var calDate = this.getSelectedDates()[0];
calDate = (calDate.getMonth() + 1) + '/' + calDate.getDate() + '/' + calDate.getFullYear();
cur_field.value = calDate;
over_cal = false;
timeStart = document.getElementById("startDate").value;
timeEnd = document.getElementById("endDate").value;
alert(timeStart)//这里能够显示出正确的值
hideCal();
}

var showCal = function(ev) {

}

var hideCal = function() {

}

var sUrl = "/GEMmanager/script/run/reportMaster?startDate=" + timeStart + "&_format=HTML&_name=${reportName}&endDate=" + timeEnd + "&_file=${template}";//此url调用后timeStart和timeEnd均为Undefined,上面的全局变量只在方法内起了作用...

</script>
<form>
<input type="hidden" name="type" value="form" />
<span id="btn"></span>
</form>
</body>
</html>
...全文
1792 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cksd1001 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kk3k2005 的回复:]

window.test='123'

这样就保证定义了一个全局的变量 test

写代码的时候要注意可读性

确定是全局的变量 那么定义的时候 直接就 吧 window加在前面
[/Quote]


谢谢
cksd1001 2011-08-22
  • 打赏
  • 举报
回复
恩,谢谢大家我解决了.... 因为ur传timeStart参数的时候并没获取到改变的值,把其放入button事件中就好了。
KK3K2005 2011-08-22
  • 打赏
  • 举报
回复
window.test='123'

这样就保证定义了一个全局的变量 test

写代码的时候要注意可读性

确定是全局的变量 那么定义的时候 直接就 吧 window加在前面
乌镇程序员 2011-08-22
  • 打赏
  • 举报
回复
移到闭包函数外面定义啊。
MuBeiBei 2011-08-22
  • 打赏
  • 举报
回复
(function() {

把这个闭包删掉~·
cksd1001 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 t5500 的回复:]

两个变量是在闭包函数里定义的,怎么说是全局变量呢?
[/Quote]

额,那请教下该怎样改?
乌镇程序员 2011-08-22
  • 打赏
  • 举报
回复
两个变量是在闭包函数里定义的,怎么说是全局变量呢?

87,907

社区成员

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

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