我有一个显示随机图片的.js文件。一种方法是代码可以正常工作,另一种方法则不能工作(不显示任何图片)。以下代码是有效的代码和无效的代码。
此代码有效:
<script> selectdir = 0; var SBcount = 1; </script>
<script src="js/scripts/superbook.js"> </script>
<script> document.write(textSB); textSB = ''; </script>
<script> selectdir = 0; var SBcount = 2; </script>
<script src="js/scripts/superbook.js"> </script>
<script> document.write(textSB); textSB = ''; </script>
<script> selectdir = 0; var SBcount = 3; </script>
<script src="js/scripts/superbook.js"> </script>
<script> document.write(textSB); textSB = ''; </script>
<script> selectdir = 0; var SBcount = 4; </script>
<script src="js/scripts/superbook.js"> </script>
<script> document.write(textSB); textSB = ''; </script>
此代码无效:
<script>
var SBcount = 0;
for (SBcharcount = 1; SBcharcount < 5; SBcharcount++)
{
var selectdir = 0; var SBcount++;
document.write('<scr' + 'ipt language="javascript" src="' +
loveisdomaindir + 'js/scripts/superbook.js"> <\/script>');
document.write(textSB); textSB = '';
}
</script>
此代码在superbook.js中,其中使用SBcount:
switch (SBcount)
{
case 1 : SBtop = 225; SBleft = 1275; SBheight = 145;
SBwidth = 100; break;
case 2 : SBtop = 325; SBleft = 1425; SBheight = 145;
SBwidth = 100; break;
case 3 : SBtop = 770; SBleft = 725; SBheight = 145;
SBwidth = 100; break;
case 4 : SBtop = 625; SBleft = 1300; SBheight = 145;
SBwidth = 100; break;
case 5 : SBtop = 12; SBleft = 210; SBheight = 50;
SBwidth = 50; break;
case 6 : SBtop = 345; SBleft = 210; SBheight = 50;
SBwidth = 50; break;
case 7 : SBtop = 515; SBleft = 210; SBheight = 50;
SBwidth = 50; break;
default : SBtop = 225; SBleft = 1275; SBheight = 145;
SBwidth = 100; break;
}
任何帮助将不胜感激。
答案 0 :(得分:1)
第一个问题是var SBcount++
是语法错误。您不能同时声明变量并对其进行递增。
也就是说,您所采用的方法存在一个根本缺陷。
当您使用document.write
写入文档流时,它将在当前脚本元素之后的之后插入脚本元素。
在第一个脚本元素执行完毕之前,它们不会执行。
因此,如果您有一个脚本(a),则该脚本:
然后事件按此顺序发生:
如果您希望第2步在第3步之后进行,那么您需要生成一个完整的脚本元素来更改X的值(就像您在第一个代码示例中手动进行的操作一样)
但是不要那样。将superbook.js
替换为函数,然后多次调用(将值作为参数传递)。