IE incompabiliteit

Status
Niet open voor verdere reacties.

burner202

Gebruiker
Lid geworden
28 sep 2007
Berichten
70
beste allemaal, ik probeer een spelletje te maken voor mijn broertje, waarmee hij kan leren lezen (11 jaar oud en syndroom van down).

nu kan ik dus alleen maar php en javascript, dus het leek mij het best om een verhaaltjessysteem in javascript te maken.

nu heb ik een leuke code die werkt in firefox, maar niet in internet explorer, en de fouten worden ook al zo geweldig duidelijk weergeven...

kan iemand misschien even naar mijn code kijken en vertellen wat er niet IE geschikt is?

Hier is de code:

PHP:
b = new Array();
teller = 0;
timer = null;
currpage = 0;
busy = 0;
function init()
{
	alert('looping...');
	var objects = document.getElementsByTagName('div');
	for (i=0;i<objects.length;i++)
	{
		
		if (objects[i].id == 'tekst0')
		{
			var stijl = objects[i].style;
			stijl.fontFamily = "Verdana, Geneva, sans-serif";
			stijl.fontSize = "24px";
			stijl.textDecoration = "none";
			stijl.textShadow = "#000";
			stijl.position = "fixed";
			stijl.top = "25%";
			stijl.left = "25%"
			b.push(objects[i]);
		}
		if (objects[i].id.substr(0,5) == 'tekst' && parseInt(objects[i].id.substr(5,6),10) != 0)
		{
			var stijl = objects[i].style;
			stijl.fontFamily = "Verdana, Geneva, sans-serif";
			stijl.fontSize = "24px";
			stijl.textDecoration = "none";
			stijl.textShadow = "#000";
			stijl.position = "fixed";
			stijl.top = "25%";
			stijl.left = "-50%"
			b.push(objects[i]);
		}
	}
}
function pageverder()
{
	if (!busy == 1)
	{
	teller = 0;
	busy = 1;
	timer = setInterval('frameforward()',50);
	}
}
function pageterug()
{
	if (!busy == 1)
	{
	teller = 0;
	busy = 1;
	timer = setInterval('framebackward()',50);
	}
}
function frameforward()
{
	for (i=0;i<b.length;i++)
	{
			if (b[i].id == 'tekst' + currpage)
			{
				//alert('thispage gevonden');
				var thispage = b[i];
			}
			if (b[i].id == 'tekst' + (currpage - 1))
			{
				//alert('prevpage gevonden');
				var prevpage = b[i];
			}
			if (b[i].id == 'tekst' + (currpage + 1))
			{
				//alert('nextpage gevonden');
				var nextpage = b[i];
			}
	}
	if (nextpage == null)
	{
	thispagepos = parseInt(thispage.style.left);
	//alert(thispagepos);
	thispagepos += 1;
	//alert(thispagepos);
	thispage.style.left = thispagepos + "%";
	//alert(thispage.style.left);
	}
	else
	{
	if (thispage)
	{
	thispagepos = parseInt(thispage.style.left);
	nextpagepos = parseInt(nextpage.style.left);
	//alert(thispagepos);
	//alert(nextpagepos);
	thispagepos += 1;
	nextpagepos += 1;
	//alert(thispagepos);
	//alert(nextpagepos);
	nextpage.style.left = nextpagepos + "%";
	thispage.style.left = thispagepos + "%";
	//alert(nextpage.style.left);
	//alert(thispage.style.left);
	}
	}
	
	
	
	teller += 1;
	
	if (teller == 75)
	{
		clearTimeout(timer);
		alert('Klaar!');
		currpage++;
		teller = 0;
		busy = 0;
	}
}


function framebackward()
{
	for (i=0;i<b.length;i++)
	{
			if (b[i].id == 'tekst' + currpage)
			{
				//alert('thispage gevonden');
				var thispage = b[i];
			}
			if (b[i].id == 'tekst' + (currpage - 1))
			{
				//alert('prevpage gevonden');
				var prevpage = b[i];
			}
			if (b[i].id == 'tekst' + (currpage + 1))
			{
				//alert('nextpage gevonden');
				var nextpage = b[i];
			}
	}
	if (prevpage == null)
	{
	}
	else
	{
	if (thispage)
	{
	thispagepos = parseInt(thispage.style.left);
	prevpagepos = parseInt(prevpage.style.left);
	//alert(thispagepos);
	//alert(prevpagepos);
	thispagepos -= 1;
	prevpagepos -= 1;
	//alert(thispagepos);
	//alert(prevpagepos);
	prevpage.style.left = prevpagepos + "%";
	thispage.style.left = thispagepos + "%";
	//alert(prevpage.style.left);
	//alert(thispage.style.left);
	}
	}
	
	
	
	teller += 1;
	
	if (teller == 75)
	{
		clearTimeout(timer);
		alert('Klaar!');
		currpage--;
		teller = 0;
		busy = 0;
	}
}

alvast bedankt, burner202
 
Het zou kunnen zijn dat je i niet geinitialiseerd hebt:

PHP:
for (i=0;i<objects.length;i++)

ipv

for (var i=0; i<objects.length; i++)

Daarnaast zou het ook kunnen dat IE style.textShadow niet kent.

Verder zie ik zo snel niet echt wat, maar wat ik me wel afvraag, is waarom doe je de styling niet gewoon in CSS in plaats van via Javascript?

Trouwens, wat werkt er eigenlijk precies niet? Gebeurt er helemaal niets?
 
ik heb even een paar dingen getest:
textshadow is het niet
i initialiseren is het ook niet

ik krijg de (zeer standaard) fout object word verwacht, de fout verwijst nu naar de functie init die in onload staat

de css heb ik zo gedaan omdat dat me wel makkelijk leek, maar ik weet niet of dat problemen kan geven?

voor de rest:
als ik de pagina open krijg is de divjes te zien, opmaakloos en het fout icoontje verschijnt met het fout op pagina

iemand een idee?
 
ok, even snel nog een update:

ik heb het volgende blok even tussen /* en */ gezet:

PHP:
for (i=0;i<objects.length;i++)
    {
        
        if (objects[i].id == 'tekst0')
        {
            var stijl = objects[i].style;
            stijl.fontFamily = "Verdana, Geneva, sans-serif";
            stijl.fontSize = "24px";
            stijl.textDecoration = "none";
            stijl.textShadow = "#000";
            stijl.position = "fixed";
            stijl.top = "25%";
            stijl.left = "25%"
            b.push(objects[i]);
        }
        if (objects[i].id.substr(0,5) == 'tekst' && parseInt(objects[i].id.substr(5,6),10) != 0)
        {
            var stijl = objects[i].style;
            stijl.fontFamily = "Verdana, Geneva, sans-serif";
            stijl.fontSize = "24px";
            stijl.textDecoration = "none";
            stijl.textShadow = "#000";
            stijl.position = "fixed";
            stijl.top = "25%";
            stijl.left = "-50%"
            b.push(objects[i]);
        }
    }

3 keer raden... nog steeds een fout in init()

hieruit maak ik op dat de regel die het probleem is dit is:

PHP:
var objects = document.getElementsByTagName('div');

maar wat klopt hier dan niet aan?
 
misschien kijk ik er overheen of iets dergelijks, maar volgens mij gaat die discussie over getElementByName, en mijn probleem ligt bij getElementsByTagName.

en de naam veranderen werkt niet :(

iemand een idee?
 
helaas :( dat werkt ook niet, ik denk dat ik ga proberen om een omweggetje te vinden...
 
ik heb zo het idee dat er iets helemaal niet in orde is...

PHP:
function begin()
{
	//var divjes;
	//var divteller = 0;
	//while(true)
	//{
		//divjes = document.getElementById('tekst' + divteller);
		//divteller++;
		
		//if (divjes.id == 'tekst0')
		//{
			/*var stijl = divjes.style;
			stijl.fontFamily = "Verdana, Geneva, sans-serif";
			stijl.fontSize = "24px";
			stijl.textDecoration = "none";
			stijl.position = "fixed";
			stijl.top = "25%";
			stijl.left = "25%"*/
		//}
		//if (divjes.id.substr(0,5) == 'tekst' && parseInt(divjes.id.substr(5,6),10) != 0)
		//{
			/*var stijl = divjes.style;
			stijl.fontFamily = "Verdana, Geneva, sans-serif";
			stijl.fontSize = "24px";
			stijl.textDecoration = "none";
			stijl.position = "fixed";
			stijl.top = "25%";
			stijl.left = "-50%"*/
			//b.push(divjes);
		//}
		//if (!divjes)
		//{
		//	break;
		//}
	//}
}

geeft nog steeds fouten?
 
nog even verder gekeken, het blijkt dat er gewoon iets heel anders fout is denk ik, ik kan helemaal geen functies aanroepen via de body tag, elke (bestaande) functie geeft een fout terug...

wat moet ik doen?

EDIT:

<script type="application/javascript" veranderd naar text/javascript, en het begin werkt nu al, mijn divjes krijgen de css, alleen het scrollen van de tekst wilt nog niet..

EDIT NR 2:

Het werkt nu helemaal, een klein iets veranderd en nu is het script (eindelijk) klaar

dus nog even dit:
de functie document.getelementsbytagname was misschien wel helemaal geen probleem, het leek aleen maar zo.. (misschien zitten er geen bugs in, maar wie weet)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan