javascript页面刷新问题
<html><head><title>js06</title><scriptlanguage="javascript"><!--vart;functionchange()...
<html>
<head>
<title>js06</title>
<script language="javascript">
<!--
var t;
function change(){
var num =(Math.random() *100)%3;
if(num==0)
document.bleach.src ="naruto/01.gif";
else if(num==1)
document.bleach.src ="naruto/02.gif";
else if(num==2)
document.bleach.src ="naruto/03.gif";
location.reload();
}
//-->
</script>
</head>
<body>
<form>
<input type="button" value="更新" onClick="change();">
<img src="img/title.jpg" name="bleach">
</form>
</body>
</html>
为什么我打开页面时,根本显示不了图片,只有一个类似"叉"的图标!并且按下"刷新"时,也没有图片,也只有一个类似"叉"的图标!为什么?
我想在页面的每次按下"刷新"按钮时,页面中就会随机的出现一幅图片,要求必须用"location.reload"! 展开
<head>
<title>js06</title>
<script language="javascript">
<!--
var t;
function change(){
var num =(Math.random() *100)%3;
if(num==0)
document.bleach.src ="naruto/01.gif";
else if(num==1)
document.bleach.src ="naruto/02.gif";
else if(num==2)
document.bleach.src ="naruto/03.gif";
location.reload();
}
//-->
</script>
</head>
<body>
<form>
<input type="button" value="更新" onClick="change();">
<img src="img/title.jpg" name="bleach">
</form>
</body>
</html>
为什么我打开页面时,根本显示不了图片,只有一个类似"叉"的图标!并且按下"刷新"时,也没有图片,也只有一个类似"叉"的图标!为什么?
我想在页面的每次按下"刷新"按钮时,页面中就会随机的出现一幅图片,要求必须用"location.reload"! 展开
展开全部
你这个页面看似简单,问题还不少嘞:(后面给出修改后的代码)
1. 图片src链接的路径分隔符是\,不是/,因此应该写成下面这样(不过有时候写成/也可以,我也不完全明白,你还是按标准的改一下吧):
<img src="img\title.jpg" name="bleach">
注意,在javascript代码中,\要用两个\\表示,例如其中的一句:
document.bleach.src ="naruto/01.gif";
要写成
document.bleach.src ="naruto\\01.gif";
2. 顺序要搞清楚,要先reload,再改变图片的src。你想一下,如果先改变图片的src,再reload,那图片不是又被默认值img\title.jpg代替了么?
3. 随机数问题:
var num =(Math.random() *100)%3;
要弄明白Math.random()*100的结果是一个小数,%3以后还是小数,怎么能直接和整数做相等比较呢?按照概率,你算算[0, 3)之间出现整数0,1,2的概率有多少?在数学上是0,因为[0,3)之间有无穷多个数,在计算机上虽然不是无穷多个,但也够你点上几千亿年的了。
4. change函数还有问题,我帮你分析一下你点了“更新”按钮以后的过程,你就明白了:
首先你点这个按钮之后,浏览器调用change函数,这个没错;
然后执行reload(假设已经按第二步改过来了)将当前页面重新载入,这个也没有问题;
再然后是计算出num的值(假设也改过来了),这个也没有问题;
关键地方来了,由于页面刚刚载入,document.bleach.src ="naruto\\01.gif"; 执行时图片还没有载入,document.bleach还不存在,那么给它的src属性赋值有什么用呢?
因此,如果一定要用reload,那么给图片的src赋值的操作应该在图片载入完毕后进行。
可以看出,如果对浏览器和javascript的执行过程及方式没有足够的了解,是很容易犯错误的。下面是我帮你修改后的代码。
<html>
<head>
<title>js06</title>
<script language="javascript">
<!--
var t;
//-->
</script>
</head>
<body>
<form>
<input type="button" value="更新" onclick="change();" />
<img src="img/title.jpg" name="bleach" id="bleach" />
</form>
<script>
var num;
function change(){
location.reload();
}
num = Math.floor(Math.random()*100)%3;
if(num==0)
document.bleach.src ="naruto\\01.gif";
else if(num==1)
document.bleach.src ="naruto\\02.gif";
else if(num==2)
document.bleach.src ="naruto\\03.gif";
</script>
</body>
</html>
要说明的是,这段代码在第一次载入页面的时候也会执行替换图片的操作,这个是没有办法的事情,因为必须使用reload,而reload会重新载入文档,函数中在其之后的代码是不会得到执行的,而reload又不能写在函数的尾部,那样会出现上面第2点那样的问题。
我思考了很久,代码必须这样写,否则没有办法做到这样的效果。
1. 图片src链接的路径分隔符是\,不是/,因此应该写成下面这样(不过有时候写成/也可以,我也不完全明白,你还是按标准的改一下吧):
<img src="img\title.jpg" name="bleach">
注意,在javascript代码中,\要用两个\\表示,例如其中的一句:
document.bleach.src ="naruto/01.gif";
要写成
document.bleach.src ="naruto\\01.gif";
2. 顺序要搞清楚,要先reload,再改变图片的src。你想一下,如果先改变图片的src,再reload,那图片不是又被默认值img\title.jpg代替了么?
3. 随机数问题:
var num =(Math.random() *100)%3;
要弄明白Math.random()*100的结果是一个小数,%3以后还是小数,怎么能直接和整数做相等比较呢?按照概率,你算算[0, 3)之间出现整数0,1,2的概率有多少?在数学上是0,因为[0,3)之间有无穷多个数,在计算机上虽然不是无穷多个,但也够你点上几千亿年的了。
4. change函数还有问题,我帮你分析一下你点了“更新”按钮以后的过程,你就明白了:
首先你点这个按钮之后,浏览器调用change函数,这个没错;
然后执行reload(假设已经按第二步改过来了)将当前页面重新载入,这个也没有问题;
再然后是计算出num的值(假设也改过来了),这个也没有问题;
关键地方来了,由于页面刚刚载入,document.bleach.src ="naruto\\01.gif"; 执行时图片还没有载入,document.bleach还不存在,那么给它的src属性赋值有什么用呢?
因此,如果一定要用reload,那么给图片的src赋值的操作应该在图片载入完毕后进行。
可以看出,如果对浏览器和javascript的执行过程及方式没有足够的了解,是很容易犯错误的。下面是我帮你修改后的代码。
<html>
<head>
<title>js06</title>
<script language="javascript">
<!--
var t;
//-->
</script>
</head>
<body>
<form>
<input type="button" value="更新" onclick="change();" />
<img src="img/title.jpg" name="bleach" id="bleach" />
</form>
<script>
var num;
function change(){
location.reload();
}
num = Math.floor(Math.random()*100)%3;
if(num==0)
document.bleach.src ="naruto\\01.gif";
else if(num==1)
document.bleach.src ="naruto\\02.gif";
else if(num==2)
document.bleach.src ="naruto\\03.gif";
</script>
</body>
</html>
要说明的是,这段代码在第一次载入页面的时候也会执行替换图片的操作,这个是没有办法的事情,因为必须使用reload,而reload会重新载入文档,函数中在其之后的代码是不会得到执行的,而reload又不能写在函数的尾部,那样会出现上面第2点那样的问题。
我思考了很久,代码必须这样写,否则没有办法做到这样的效果。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询