webForumDet fria alternativet
Logga in / Bli medlem

Ladda i Frames

JavaScript

10 svar · 832 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Trådstart#1

Hej!
Jag har ett frameSet som består av topFrame, bottomFrame, leftMenuFrame och mainFrame

Ibland så vill jag ha menuFrame OCH mainFrame och ibland så vill jag bara ha mainFrame

Dessa val gör jag i topFrame som har en meny...

Kan jag göra det på något smidigt sätt?

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#2

Hejsan!

Menar du att du vill kunna ladda sidor i de olika ramarna? Om så, hur vill du göra det; med länkar, <select> eller något annat?

Medlem sedan jan. 20013 582 inlägg
#3

Nä.. eller det också kanske..

det jag vill är att "splitta" mainFrame till mainFrame och leftMenuFrame (och ladda sidor där beroende på menyvalet i topFrame!

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#4

Om vi antar att ditt ramsystem ser ut enligt (notera id-attributet):

<frameset rows="25%,*,25%">
  <frame name="topFrame">
  <frameset [b]id="middle"[/b]>
    <frame name="leftMenuFrame">
    <frame name="mainFrame">
  </frameset>
  <frame name="bottomFrame">
</frameset>

Då (i topFrame)

<a href="javascript:void(0)" onclick="top.document.getElementById('middle').cols='0,100%'">mainFrame only</a>
<a href="javascript:void(0)" onclick="top.document.getElementById('middle').cols='20%,*'">leftMenuFrame/mainFrame</a>

:)

Medlem sedan jan. 20013 582 inlägg
#5

Hmm får inte till det riktigt...

Mitt Frameset ser ut så här:

<frameset rows="85,*,80" cols="*" framespacing="0" frameborder="no" border="0">
  <frame src="topFrame.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
  <frameset id="middle">
    <frame src="menu/solarArticleMenu.asp" scrolling="auto" />
    <frame src="mainFrame.html" name="mainFrame" id="mainFrame" title="mainFrame" />
  </frameset>
  
  <frame src="bottomFrame.html" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>

topFrame:

<table width="1000" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="100"><a href="javascript:void(0)" onclick="top.document.getElementById('middle').cols='0,100%'">Visa material</a></td>
    <td width="100">Visa arbetstid </td>
    <td width="120">L&auml;gg till arbetstid </td>
    <td width="120"><a href="javascript:void(0)" onclick="top.document.getElementById('middle').cols='20%,*'">Lägg till material</a></td>
    <td width="60">&nbsp;</td>
    <td width="100">&nbsp;</td>
    <td width="100">&nbsp;</td>
    <td width="100">&nbsp;</td>
    <td width="100">&nbsp;</td>
    <td width="100">&nbsp;</td>
  </tr>
</table>

när jag klickar på någon av länkarna visas detta felmeddelande:
'top.document.getelementById(...)' är null eller inget objekt...

Medlem sedan dec. 20025 483 inlägg
#6

Ange värden för cols i <frameset cols="100%,*" id="middle">. :)

Medlem sedan jan. 20013 582 inlägg
#7

Ha!
Funkar ju fint... tog bort lite för mycket först.. Det konstiga var att det fungerade i FireFox men inte i IE...

Thanx!

Men hur väljer jag vilka sidor som skall laddas?

När jag klickar på Visa material så skall ju viewmtrl.asp laddas i mainFrame och när jag klickar på Lägg till material ska ju articleMenu.asp laddas i menyn och listMtrl.asp laddas i mainFrame..

//Henrik

Medlem sedan dec. 20025 483 inlägg
#8

Glöm inte att döpa din menyram till "leftMenuFrame":

<script type="text/javascript">

function navigate(){
    var args   = arguments,
        len    = args.length,
        middle = top.document.getElementById("middle");

    switch (len){
	case 1:
	{
	    middle.cols = "*,100%";
	    top.frames[args[0][0]].location.href = args[0][1];

	} break;

	case 2:
	{
	    middle.cols = "20%,*";

	    for (var i = 0; i < len; ++i){
		top.frames[args[i][0]].location.href = args[i][1];
	    }

	} break;
    }
}

</script>

<table width="1000" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="100"><a href="javascript:void(0)" onclick="navigate(['mainFrame','viewMtrl.asp'])">Visa material</a></td>
    <td width="100">Visa arbetstid </td>
    <td width="120">L&auml;gg till arbetstid </td>
    <td width="120"><a href="javascript:void(0)" onclick="navigate(['mainFrame','listMtrl.asp'], ['leftMenuFrame','articleMenu.asp'])">Lägg till material</a></td>
    <td width="60">&nbsp;</td>
    <td width="100">&nbsp;</td>
    <td width="100">&nbsp;</td>
    <td width="100">&nbsp;</td>
    <td width="100">&nbsp;</td>
    <td width="100">&nbsp;</td>
  </tr>
</table>
Medlem sedan jan. 20013 582 inlägg
#9

tack för det... men det vill sig inte... riktigt hus ka framesetet se ut nu...??

ska jag hamed frame src"" ?

<frameset rows="85,*,80" cols="*" framespacing="0" frameborder="no" border="0">
  <frame src="topFrame.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
  <frameset cols="100%,*" id="middle">
    <frame name="leftMenuFrame" scrolling="auto" id="leftMenuFrame" title="leftMenuFrame" />
    <frame name="mainFrame" id="mainFrame" title="mainFrame" />
  </frameset>
  
  <frame src="bottomFrame.html" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>

börjar känna mig tjatig... sorry...

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#10

Det smög sig in ett litet fel i koden ovan. Se det redigerade inlägget. :)

Medlem sedan jan. 20013 582 inlägg
#11

Det är ju så man blir tårögd.... Vackert!!

Tack för hjälpen Peter S!

Mvh
Henrik

262 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)