Hoi,

Ik heb weinig verstand van javascript, waarom werkt dit script niet goed in firefox, hij werkt wel goed in ie ?


<script language=\"JavaScript\">
<!-- Beginning of JavaScript -

// Vul hieronder de namen ( met doel eventueel ) van de plaatjes in.. je kunt er net zoveel toevoegen als je wilt
var imgurl=new Array("; 

if (!empty($fotos))
{
	print "$fotos,$fotoskamer )";
}

else

{
	print "$fotoskamer)";
}

echo "

// Afstand van de slideshow linker kantlijn
var x_finalpos=220

// Asftand slideshow vanaf de top
var y_finalpos=160

// stilstaan van de plaatjes in seconden 
var standstill=5

// verander hieronder niets meer
var x_slices=6
var y_slices=4
var imgpreload=new Array()
for (i=0;i<=imgurl.length-1;i++) {
	imgpreload[i]=new Image()
	imgpreload[i].src=imgurl[i]
}
var imgheight
var imgwidth
var screenheight
var screenwidth
var x_step=new Array()
var y_step=new Array()
var x_randompos=0
var y_randompos=0
var i_loop=0
var max_loop=20
var i_image=0
var width_slice
var height_slice
var cliptop=0
var clipbottom=height_slice
var clipleft=0
var clipright=width_slice
var spancounter=0
var pause=10
standstill=1000*standstill

function initiate() {
	screenheight=document.body.clientHeight-imgheight-30
	screenwidth=document.body.clientWidth-imgwidth-30
	width_slice=Math.floor(imgwidth/x_slices)
	height_slice=Math.floor(imgheight/y_slices)
	cliptop=0
	clipbottom=height_slice
	clipleft=0
	clipright=width_slice
	i_loop=0
	spancounter=0
    if (document.all) {
 	    for (i=0;i<=y_slices-1;i++) {
			for (ii=0;ii<=x_slices-1;ii++) {
				var thisspan=eval(\"document.all.span\"+spancounter+\".style\")
				x_randompos=Math.ceil(screenwidth*Math.random())
				y_randompos=Math.ceil(screenheight*Math.random())
				thisspan.posLeft=x_randompos
				thisspan.posTop=y_randompos
                thisspan.clip =\"rect(\"+cliptop+\" \"+clipright+\" \"+clipbottom+\" \"+clipleft+\")\"
				clipleft+=width_slice
		        clipright+=width_slice
		        spancounter++
			}
        	clipleft=0
	        clipright=width_slice
	        cliptop+=height_slice
	        clipbottom+=height_slice
		}
   }
   explode_IE()
}

function changeimage() {
	spancounter=0
	for (i=0;i<=y_slices-1;i++) {
		for (ii=0;ii<=x_slices-1;ii++) {
			var thisspan=eval(\"document.all.span\"+spancounter+\".style\")		
			thisspan.posLeft=-5000
			thisspan.posTop=-5000
			spancounter++
		}
	}
	spancounter=0
	if (i_image>imgurl.length-1) {i_image=0}
	for (i=0;i<=y_slices-1;i++) {
		for (ii=0;ii<=x_slices-1;ii++) {
			var thisinnerspan=eval(\"span\"+spancounter)
    		thisinnerspan.innerHTML=\"<img src='\"+imgurl[i_image]+\"'>\"
			spancounter++
		}
	}
	imgwidth=document.all.span0.offsetWidth
	imgheight=document.all.span0.offsetHeight
	i_image++
	initiate()
}

function explode_IE() {
	spancounter=0
	if (i_loop<=max_loop-1) {
		for (i=0;i<=y_slices-1;i++) {
			for (ii=0;ii<=x_slices-1;ii++) {
				var thisspan=eval(\"document.all.span\"+spancounter+\".style\")
				x_step[spancounter]=(x_finalpos-thisspan.posLeft)/(max_loop-i_loop)
				y_step[spancounter]=(y_finalpos-thisspan.posTop)/(max_loop-i_loop)		
				thisspan.posLeft+=x_step[spancounter]
				thisspan.posTop+=y_step[spancounter]
				spancounter++
			}
		}
		i_loop++
		var timer=setTimeout(\"explode_IE()\",pause)
	}
	else {
		spancounter=0
		clearTimeout(timer)
		var timer=setTimeout(\"changeimage()\",standstill)
	}
}

if (document.all) {
	for (i=0;i<=y_slices-1;i++) {
		for (ii=0;ii<=x_slices-1;ii++) {
    		document.write(\"<span id='span\"+spancounter+\"' style='position:absolute;left:-5000px'></span>\")
			spancounter++
		}
	}
	spancounter=0
}

if (document.all) {window.onload=changeimage}
// - End of JavaScript - -->
</script>
";


Alvast bedankt!
Ik zie PHP en JavaScript door elkaar?
Dat klopt, ik vul de array met javascript, ik laat daarna de variabele los op javascript,

Kan dat niet ? Het werkt in ie ik denk dus dat dat ook in firefox moet kunnen.

Of is dat gewoon niet gebruikelijk en werkt het niet in firefox?

Herman
Ik zou het zoiezo zoveel mogelijk scheiden, simpel voorbeeld:

<?php
if(!empty($fotos)){
    $defoto = $fotos.",".$fotoskamer;
}else{
    $defoto = $fotoskamer;
}
?>

<script language=\"JavaScript\">
<!-- Beginning of JavaScript -

// Vul hieronder de namen ( met doel eventueel ) van de plaatjes in.. je kunt er net zoveel toevoegen als je wilt
var imgurl=new Array("<?php echo $defoto; ?>")

// Afstand van de slideshow linker kantlijn
var x_finalpos=220

//vervolg van je script

-->
</script>

Reageren