Meerdere dezelfde javascripts oproepen in een php-lus

Status
Niet open voor verdere reacties.

ElsyV

Gebruiker
Lid geworden
7 sep 2007
Berichten
218
In een php-lus staat een tabbed-menu met javascript.
Het eerste menu werkt goed maar de menu's die eronder komen te staan werken niet.

Wie weet hoe ik dit op kan lossen?
Ik weet niets van javascript dus hopelijk kan iemand mijn script aanpassen.

Dit stukje staat in de index net voor de </head>-tag:
HTML:
<link rel="stylesheet" media="all" type="text/css" href="tabbed_pages.css" />
<script src="tabbed_pages.js" type="text/javascript"></script>

Dit is de code die ik aanroep waar de menu's moeten verschijnen; tabbladen.php:
HTML:
<div id="gallery">

<div class="on" title="tab1"><span>tab1</span></div>

<div class="off" title="tab2"><span>tab2</span></div>

<div class="off" title="tab3"><span>tab3</span></div>

</div>



<div id="tab1" class="show">

inhoud tab1

</div>



<div id="tab2" class="hide">

inhoud tab2

</div>



<div id="tab3" class="hide">

inhoud tab3

</div>

Dit is het .js bestand:
[JS]onload = function() {
var e, i = 0;
while (e = document.getElementById('gallery').getElementsByTagName ('DIV') [i++]) {
if (e.className == 'on' || e.className == 'off') {
e.onclick = function () {
var getEls = document.getElementsByTagName('DIV');
for (var z=0; z<getEls.length; z++) {
getEls[z].className=getEls[z].className.replace('show', 'hide');
getEls[z].className=getEls[z].className.replace('on', 'off');
}
this.className = 'on';
var max = this.getAttribute('title');
document.getElementById(max).className = "show";
}
}
}
}[/JS]

En dit is een stuk van de php-lus die er voor zorgt dat er bv. 10x dit menu onder elkaar moet verschijnen met verschillende inhoud:
PHP:
<?php
$query1 = "SELECT * FROM linken_nieuw WHERE subrubriek_id = ".$_GET['subrubriek_id']." AND zichtbaar <> FALSE ORDER BY naam ".$sort." LIMIT ".$offset;
$result1 = mysql_query($query1) or die (mysql_error());
	while($row1 = mysql_fetch_assoc($result1))
			{
			//begin van de tabel met verschillende inhoud
			 include("tabbladen.php"); 
}
?>
 
Laatst bewerkt:
Heb je toevallig een (online) voorbeeld? Volgens mij ligt het aan de loop, maar ik kan het fout hebben.

De meeste browsers hebben een foutenconsole (behalve IE); druk eens op ctrl+shift+J. Onderaan zou je fout moeten staan (als je op een tab drukt die 'niet werkt').



:thumb:
 
Wat ik nu zie heb ik nog nooit gezien :) (Chrome)

Er staat nu dit: Resource interpreted as Script but transferred with MIME type application/nosj.
jsonfeed.php:-1Resource interpreted as Script but transferred with MIME type text/html.

Het kan ook zijn dat hij niet iedere keer hetzelfde javascript op kan roepen omdat die hetzelfde is.
Misschien moet er een soort teller in zodat ieder script dat je aanroept uniek is?

Je kunt hier even kijken en dan moet je maar op het bovenste tab-menu klikken op tab 2, dan zie je dat het menu eronder niet meer werkt: http://www.fotoalbum-maken.nl/index-test.php?hoofdrubriek_id=1&hoofdrubrieknaam=Fotoalbums&subrubriek_id=1&subrubrieknaam=FOTOALBUM%20MAKEN
 
Laatst bewerkt:
Ah, ja, ik zie het al. Je gebruikt meerdere divs met hetzelfde ID; en per definitie (en HTML standaard ;)) mag een ID maar 1x voorkomen.

Mischien kan je eens experimenteren met verschillende ID's gebruiken. Het kan al heel simpel; gewoon een tellertje erbij zetten:

PHP:
<?php
$teller = 0;
$query1 = "SELECT * FROM linken_nieuw WHERE subrubriek_id = ".$_GET['subrubriek_id']." AND zichtbaar <> FALSE ORDER BY naam ".$sort." LIMIT ".$offset;
$result1 = mysql_query($query1) or die (mysql_error());
    while($row1 = mysql_fetch_assoc($result1))
            {
$teller++;   // inc
            //begin van de tabel met verschillende inhoud
             include("tabbladen.php"); 
}
?>

dan, in je tabbladen.php, echo je achter elk ID een underscore en dan de waarde van de $teller (oid).




:thumb:
 
Oh, over je Chrome-console-dingetjes:
Er staat nu dit: Resource interpreted as Script but transferred with MIME type application/nosj.
jsonfeed.php:-1Resource interpreted as Script but transferred with MIME type text/html.
Het gaat hierbij om een niet fatale fout; eg. een bestand heeft de extentie .php maar wordt aangeroepen als Javascript bestand. In het .php bestand moet je nog een correcte header toevoegen, bijvoorbeeld:

PHP:
header('content-type: text/javascript');
 
Ik kwam er niet helemaal uit dus heb het nu achterwege gelaten en het op een andere manier gedaan.
Misschien dat ik het ooit nog eens ga proberen op bovenstaande manier.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan