webForumDet fria alternativet

xml och javascript, göm o visa

8 svar · 344 visningar · startad av roady

roadyMedlem sedan jan. 2002473 inlägg
#1

vet att folk inte brukar gilla att man postar hela sin kod, men jag kan inte låta bli.

har hittat lite kod som jag försöker skriva om till eget syfte, men det går inte så bra. Tanken är att det skall bli en utfällbar meny, och menyn bygger på en xml-fil.

problemet är att när jag försöker fälla ut undergruppen för att få ut alla länkarna så går det inte.....

Detta är xmlfilen list.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<forum>
	<group name="utrustning">
		<thread undername="objektiv">
			<field post="22" meny="Teleobjektiv"></field>
			<field post="32" meny="makroobjecktiv"></field>
			<field post="33" meny="normal"></field>
			<field post="82" meny="widangel"></field>
		</thread>
		<thread undername="väskor">
			<field post="15" meny="ryggsäck"></field>
			<field post="20" meny="kameraväskor"></field>
			<field post="3" meny="blixtväskor"></field>
		</thread>
	</group>
	<group name="tekniker">
		<thread undername="väder">
			<field post="35" meny="mulet"></field>
			<field post="22" meny="soligt"></field>
			<field post="10" meny="regn"></field>
			<field post="3" meny="snö"></field>
		</thread>
		<thread undername="kamera">
			<field post="15" meny="slutare"></field>
			<field post="20" meny="blixt"></field>
			<field post="3" meny="reflektor"></field>
		</thread>
	</group>
	<group name="kameror">
		<thread undername="minolta">
			<field post="22" meny="objektiv"></field>
			<field post="32" meny="hus"></field>
			<field post="33" meny="blixt"></field>
			<field post="82" meny="digitalt"></field>
		</thread>
	</group>
</forum>

Sedan har vi själva sidan...
Problemet måste ligga längst ner i javascripten som är rödmarkerad.

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<STYLE TYPE="text/css">
.Expand		{font-family:courier; cursor:hand}
</STYLE>
</head>

<body>

<XML id="groups" src="list.xml">
</XML>

<table width="600" border="1" cellspacing="0" cellpadding="0" DATASRC="#groups">
  <tr> 
    <td width="40" align="center" valign="top" id="groupExpand">+</td>
    <td width="560" id="groups" class="Expand"><DIV DATAFLD="name"></DIV></td>
  </tr>
  <tr>
    <td width="40"><DIV STYLE="display:none">&nbsp;</DIV></td>
	<td width="560"><DIV ID="tblGroupsShow" STYLE="display:none">
	<!-- undergrupp  -->
		<table width="440" border="0" cellspacing="0" cellpadding="0" DATASRC="#groups" DATAFLD="thread">
			<tr> 
			  <td width="40" align="center" valign="top" id="undergroupsExpand">+</td>
			  <td width="400" class="Expand" id="undergroups"><DIV DATAFLD="undername"></DIV></td>
			</tr>
			<tr> 
			  <td>&nbsp;</td>
			  <td width="400"><DIV ID="tblunderGroupsShow" STYLE="display:none">
			  <!-- menyn -->
				   <table width="440" border="0" cellspacing="0" cellpadding="0" DATASRC="#groups" DATAFLD="field">
					<tr>
						<td><DIV DATAFLD="name"></DIV></td>
					</tr>
				  </table>
			  <!-- slut på meny -->
			  </div></td>
			</tr>
		  </table>
	  <!-- slut på undergrupp -->
	  </div></td>
  </tr>
</table>

<SCRIPT LANGUAGE="JavaScript" FOR="groups" EVENT="onclick">

  rowID = this.recordNumber - 1;	// vilken "rad" är vi på

  if (tblGroupsShow[rowID].style.display == "none")	// Ifall raden är gömd så expandera
  {
    groupExpand[rowID].innerText = "-";				// Sätt plus till ett minus
    tblGroupsShow[rowID].style.display = "inline";	// expandera undergruppen
  }
  else
  {
    groupExpand[rowID].innerText = "+";				// byt minus till plus
    tblGroupsShow[rowID].style.display = "none";	// fäll in undergruppern
  }

  window.event.cancelBubble = true;	// har inte en aning

</SCRIPT>

[red]<SCRIPT LANGUAGE="JavaScript" FOR="undergroups" EVENT="onclick">

  target = this.parentNode.parentNode.parentNode.rows[this.parentNode.rowIndex+1];	// vilken rad skall vi pilla på
  if (target.style.display == "none")	// är menyn infälld så expandera
  {
    target.style.display = "inline";	
  }
  else									// den är utfälld så fäll in
  {
    target.style.display = "none";
  }

  window.event.cancelBubble = true;		// har inte en aning

</SCRIPT>[/red]

</body>
</html>
JojoxxMedlem sedan juni 20004 308 inlägg
#2

Är det nödvändigt att lösa på det just detta sätt? Du kan använda html+dom och få samma effekt på en meny som även fungerar i andra webbläsare än IE. http://www.jojoxx.net/dhtml/ (DOM meny 2).

Peter SMedlem sedan dec. 20025 483 inlägg
#3

Jojoxx förslag verkar mest vettigt, annars får du en möjlig lösning här ( se bifogad fil ).

Bifogade filen redigerad. Jag glömde lägga till ändringen av "+" och "-" ;)

:)

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Det gick inte så bra att ladda upp en reviderad fil, så den kommer här istället.

:)

roadyMedlem sedan jan. 2002473 inlägg
#5

ingen fara med plus o minus ändringarna, kan försöka med dem själv. Annars funkar det ju kanon Peter.
grymt tack,

tanken med att jag vill ha xml-verisionen är smidig omarbetning och anpassning till flera olika ställen ;)

roadyMedlem sedan jan. 2002473 inlägg
#6

plus o minus funkar ju ;)
men det är som Jojjox skrev, funkar bara i IE vilket är lite tråkigt.

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Använder du sedan SSI/ASP/PHP e.dyl. så att du kan inkludera bara menyn är den snudd på lika enkel som xml-varianten. :)

roadyMedlem sedan jan. 2002473 inlägg
#8

men har en tanke såhär,
om en person klickar sig genom din meny (dom-varianten), kan jag lägga en cookiefil på det så nästa gång personen kommer dit så är samma flikar utfällda ?

typ en stor cookie fil med , imellan så kör man en split och loop på det eller hur skulle du ha gjort ?

JojoxxMedlem sedan juni 20004 308 inlägg
#9

Menyn har en liten odokumenterad funktion som heter findLink() (titta i scriptet). Den kan du anropa med en url så kommer scriptet att leta reda på den meny som innehåller en länk med den url'en och visa den. Funktionen är till för att kunna synca menyn till den sida som den visar (typ MSDN).

Den borde du kunna använda.

138 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
128 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)