返回信息流function f(file){
var totalLines=0;
$.get('countLine.do?file='+file,function(data){
totalLines=data;
});
}
这样写有没有问题?
data的值是能够取到的
但是执行完totalLines的值还是0
怎么样才能让totalLines取到data里面的值?
这是一条镜像帖。来源:北邮人论坛 / www-technology / #12734同步于 2011/3/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
一个js相关的问题=。=
oooooo
2011/3/31镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
执行完之后totalLines的确是变了。不过是局部变量,取不到而已。。
你的目的是在$.get后面使用totalLines的值是吗?
在这个地方,$.get只是注册了一个回调函数,只有当页面返回了才会执行,所以totalLines并不是立即改变的。
应该把后续代码放在回调function中
function f(file){
var totalLines=0;
$.get('countLine.do?file='+file,function(data){
totalLines=data;
$('#source').load(url);
var div=document.getElementById("source");
div.scrollTop=div.scrollHeight*(line/totalLines);
});
}
按照你说的,我把后面的代码放到回调函数里了
但是现在又出现了一个问题:
我是给<tr>加了一个onclick方法来触发这个事件的,
但是点击一次之后,$('#source').load(url);这句执行了
而div的滚动条却没有发生变化,在第二次点击之后才会变,这是为啥?
【 在 zzcc (足兆叉虫 <中立生物>) 的大作中提到: 】
: 执行完之后totalLines的确是变了。不过是局部变量,取不到而已。。
: 你的目的是在$.get后面使用totalLines的值是吗?
: 在这个地方,$.get只是注册了一个回调函数,只有当页面返回了才会执行,所以totalLines并不是立即改变的。
: ...................
因为load又是一个回调。。。
当没有load完之前,滚动条高度还是0...
所以。。你需要再把load后面的代码放在load的回调中。。
【 在 oooooo 的大作中提到: 】
: function f(file){
: var totalLines=0;
: $.get('countLine.do?file='+file,function(data){
: ...................
赞~终于搞定了……
【 在 zzcc (足兆叉虫 <中立生物>) 的大作中提到: 】
: 因为load又是一个回调。。。
: 当没有load完之前,滚动条高度还是0...
: 所以。。你需要再把load后面的代码放在load的回调中。。
: ...................
这样如何?
<head>
<script type='text/javascript'>
var globalState = {
totalLines: 0
};
function f(file){
$.get('countLine.do?file='+file,function(data){
globalState.totalLines = data;
});
}
</script>
</head>
【 在 wks 的大作中提到: 】
: 这样如何?
: <head>
: <script type='text/javascript'>
: ...................
为什么要把变量封装在一个json里面呢,难道是为了实现一个统一的存放全局变量的对象?
我猜是命名空间
【 在 yqiao2007 的大作中提到: 】
: : 这样如何?
: : <head>
: : <script type='text/javascript'>
: ...................
其实没必要吧。对Javascript的作用域不太熟悉,怕全局变量不能在函数里修改。
如果是Python,只要函数里对一个变量进行写操作,这个变量就是局部变量,如:
>>> a=9 # 定义全局变量
>>> def g(): #函数g仅仅读取a,所以a指的是全局的a
print a
>>> def f(x): #函数f写了a,所以这个a是f的局部变量
a=x
>>> g()
9
>>> f(18) # 这个函数其实没有副作用
>>> a
9
>>>
但是,想要写全局变量,在函数里用global关键字就可以:
>>> def h(x):
global a # 说明这个函数里用的a是全局的a
a=x
>>> h(18) # 有副作用
>>> a
18
javascript里这样行不行:
<head>
<script type='text/javascript'>
var totalLines=0;
function f(file){
$.get('countLine.do?file='+file,function(data){
totalLines = data;
});
}
</script>
</head>
【 在 yqiao2007 的大作中提到: 】
: : 这样如何?
: : <head>
: : <script type='text/javascript'>
: ...................
Javascript的作用域和python是一样的,函数内就是闭包
不同的是,javascript的变量需要声明,若不var,变量就是全局变量。
【 在 wks 的大作中提到: 】
: 其实没必要吧。对Javascript的作用域不太熟悉,怕全局变量不能在函数里修改。
: 如果是Python,只要函数里对一个变量进行写操作,这个变量就是局部变量,如:
: >>> a=9 # 定义全局变量
: ...................