注册 登录
编程论坛 ASP技术论坛

这个javascript脚本是怎么样实现循环的?

yangzeng 发布于 2008-08-17 23:14, 1506 次点击
<html>
<head>
<script type="text/javascript">
cc=0
function changeimage()
{
if (cc==0)
{
cc=1
document.getElementById('myimage').src="/i/eg_bulbon.gif"
}
else
{
cc=0
document.getElementById('myimage').src="/i/eg_bulboff.gif"
}
}
</script>
</head>

<body>

<img id="myimage" onclick="changeimage()"
border="0" src="/i/eg_bulboff.gif"
width="100" height="180" />
<p>Click to turn on/off the light</p>

这是一个开灯和关灯的代码,我不明白的是:cc这个变量的初始值是0,然后那个判断语句的值等于0,这个代码怎么实现循环的,当然我知道那个事件是单击了,我不明白这个循环怎么实现的!
18 回复
#2
anlige2008-08-17 23:19
哪里有循环啊?灯开的时候cc是1,当你点按钮时候程序发现cc是1(灯开着,cc不是0),就去执行关灯程序,在关灯程序里设置cc=0,下次再点....就不用说了吧?~
#3
yangzeng2008-08-18 08:15
这个是判断句?if (cc==0) 能详细点吗谢谢了
#4
yangzeng2008-08-18 09:17
if (cc==0)
{
cc=1
document.getElementById('myimage').src="/i/eg_bulbon.gif"
}
else
{
cc=0
document.getElementById('myimage').src="/i/eg_bulboff.gif"
}
}
</script>

我就是不明白这个,如果cc等于0
进入语句,为什么还有个cc=1,和cc=0
代表什么意思?
#5
yms1232008-08-18 11:04
楼主应该先买一本javascript的基础教程来看看。
#6
yangzeng2008-08-18 11:47
版主先帮我解释这个问题好吗?我有教程!谢谢了
就是不理解
#7
yms1232008-08-18 12:09
不知道你的教程里有没有javascript的事件的知识,看了javascript的事件机制就明白了
#8
yangzeng2008-08-18 12:43
事件方面的知识我只会的!
可是我就不明白这个if (cc==0)
{
cc=1
document.getElementById('myimage').src="/i/eg_bulbon.gif"
}
else
{
cc=0
document.getElementById('myimage').src="/i/eg_bulboff.gif"
}
}
</script>

我就是不明白这个,如果cc等于0
进入语句,为什么还有个cc=1,和cc=0
代表什么意思?
#9
yms1232008-08-18 13:00
<script type="text/javascript">
cc=0
function changeimage()
{
if (cc==0)
{
cc=1
document.getElementById('myimage').src="/i/eg_bulbon.gif"
}
else
{
cc=0
document.getElementById('myimage').src="/i/eg_bulboff.gif"
}
}
</script>
变量的作用域楼主是否理解?
#10
yangzeng2008-08-18 13:54
作用域只在这个函数内有作用理解
#11
yms1232008-08-18 21:25
<script type="text/javascript">
var cc=0;
function TestFunction1()
{
   alert(cc);
}
function TestFunction2()
{
   var cc=1;
   alert(cc);
}
TestFunction1();
TestFunction2();
</script>
楼主运行上面的代码考虑cc的变量输出为什么不同
#12
yangzeng2008-08-18 22:11
TestFunction1();利用了全局变量的初值,是零,所以弹出提示框内容为0
TestFunction2()这个过程是里面又把cc定义了一个新值局部变量值,所以输出是1
#13
yangzeng2008-08-18 22:15
跟那个代码有什么联系吗?关键是,不理解的是:那个if判断语句为什么一点击后,cc=1,就等于1了,等于1后就执行它后面的语句了!问题是为什么等于1,他的全局变量的值是0
#14
yms1232008-08-18 23:06
[bo][un]yangzeng[/un] 在 2008-8-18 22:15 的发言:[/bo]

跟那个代码有什么联系吗?关键是,不理解的是:那个if判断语句为什么一点击后,cc=1,就等于1了,等于1后就执行它后面的语句了!问题是为什么等于1,他的全局变量的值是0

cc=0的确是初始化了
但是要注意的是初始化。
楼主并没有完全理解javascript的执行原理和过程
cc=0只是在开始的时候初始化了
当点击按钮后调用的只是那个函数,这时cc=0的这段代码并不属于这个函数,计算机会严格的只执行这个函数内的代码,再点击按钮同样如此。而且我想每本javascript的教材里都会明确的说明按钮点击后会执行按钮点击时所关联的函数。
并没有说会执行整个脚本,如果楼主看的教材里说过执行整个脚本,那我只想说楼主肯定买到了劣质教材。
#15
anlige2008-08-19 01:13
cc是一个全局变量~这个变量代表灯的当前状态,通过cc与0和1比较来确认当前状态,从而改变状态为相反状态..................
#16
yangzeng2008-08-19 08:43
那就先谢谢了!还有点模糊!
#17
yms1232008-08-19 10:27
客户端与服务器端的执行原理是不同的,在ASP里服务器端的页面级全局变量是每次都会被初始化的,原因在于服务器端不会保留页面级的数据,当一个页面执行完毕就会清空所有数据。
而客户端不同在于客户端运行在浏览器上,浏览器在加载程序脚本后会一直执行,而且只加载一次浏览器脚本(除非刷新网页会从新加载脚本)。因此浏览器只有在当前页面被刷新和关闭时初始化或清空页面数据,所以在浏览器端的全局变量只在网页打开加载时初始化一次,而网页没有被关闭前这个变量一直有效,但不会再次被初始化(除非程序员人为的去初始化)。
因此楼主的同样一段程序运行在浏览器上这么写就是正确的,但放到服务器端cc无论怎么点击都是0,就是我说的那个原理。
#18
yangzeng2008-08-19 11:10
谢谢版主!非常感谢,我明白了,这样的原理还真不少!请问版主是从哪里学到这方面的原理的,肯定有许多编网站是,存在很多这方面的原理,对于那些从事潜意识的编程人(也就是普通的编程人),我估计都不了解各个方面的原理!囊告诉我哪里能学到吗
#19
yangzeng2008-08-19 11:10
看来,开关这个代码东西,引出来的知识可真不少
1