Avatar billede flashit Nybegynder
05. september 2006 - 11:02 Der er 39 kommentarer og
1 løsning

Er der fejl i denne JAvaScript

Hej E.

Jeg har følgende java script:

/* MCPosition:absolute layer */
/* Script by Marc Clemmensen */
/* http://exp.dk/spm/715114  */
/* - - - Version: 0.97 - - - */
/* Free use - keep this note */
/* If changed add extra note */

/* Edited version by MClemens */


/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=2; // Amount of pixels used for each change.
mcperr=false; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp={}; // Object for transportation of objects and their properties

window.onload=function(){

// Initiate element gathering onload
var tns=document.form1.getElementById("mcp_div").childNodes; // Get all childs
while(tns.length>0){

  if(tns[0].id){

  // Check if you've made all div's neccessary...
  if(tn=document.form1.getElementById(tns[0].id+"_")){
    mcp[tns[0].id]={
    c:false,r:0, // Set open/close check and running count
    o:tns[0],s:tns[0].style, // Shortcut to object and style
    h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
    };

  tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

  tn.style.height="0px"; // Set height of new parent div element
  tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

  tn.removeChild(tn.childNodes[0]);tn.appendChild(tns[0]); // Move div element

  }else if(mcperr)alert("The div with id:\n"+tns[0].id+"_\n- was not found");

  }
  else{
  tnx=document.form1.getElementById("mcp_div");
  tnx.removeChild(tnx.childNodes[0]);
  }
}

}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut
mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.id+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=-tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.id+"',"+mcp2+");",mcpcs);

}
}


Det skal bruges på en side med denne kode.
<%@ Master Language="VB" CodeFile="Site.master.vb" Inherits="Site" %>
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Dotdk. Hvad er .net for noget</title>
   
    <link rel="stylesheet" type="text/css" href="style/style.css" />
   
</head>
<body>
    <form id="form1" runat="server">
        <atlas:ScriptManager ID="MainPage" EnablePartialRendering="true" runat="server">
        </atlas:ScriptManager>
        <div id="wrapper">
            <div id="header">
                <asp:Image runat="server" ImageUrl="~/SiteImages/Banner.jpg" ID="dotdkdkBanner" Width="850"
                    Height="94" />
            </div>
           
            <!-- Admin div opbygningen starter her-->
           
            <div class="abs">
                <div id="mcpbrev_" class="mcp_app">
                </div>
            </div>
            <div id="mcp_div">
                <div id="Div1" class="mcp_abs">
                    <asp:ContentPlaceHolder ID="AdminPart" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
            </div>
            <!-- Admin div slut-->
           
            <div id="leftcontent">
                <div id="breadcrumb">
                    Home >> Admin >> Blog Kategori
                    <asp:LinkButton ID="LinkButton1" runat="server">test</asp:LinkButton></div>
                <div id="indhold">
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
            </div>
            <div id="rightcontent">
                <div id="menu">
                    <uc1:Menu ID="Menu1" runat="server" />
                </div>
                <br />
            </div>
            <div class="clearer">
            </div>
            <div id="footertop">
                <img src="SiteImages/Bund-Top.jpg" alt="footertop" width="850" height="9" /></div>
            <div class="footer">
                <!-- Footer content goes here-->
                <div id="footerlogo">
                    <asp:Image runat="server" ImageUrl="~/SiteImages/DotdkLogo.jpg" ID="logo" Width="34"
                        Height="35" /></div>
                <div id="footermenu">
                    Home
                    <asp:Image runat="server" ImageUrl="~/SiteImages/FooterSpacing.jpg" ID="spacing1" />
                    Blog
                    <asp:Image runat="server" ImageUrl="~/SiteImages/FooterSpacing.jpg" ID="spacing2" />
                    Foto
                    <asp:Image runat="server" ImageUrl="~/SiteImages/FooterSpacing.jpg" ID="Image3" />
                    Links
                    <asp:Image runat="server" ImageUrl="~/SiteImages/FooterSpacing.jpg" ID="Image4" />
                    Kontakt<br />
                    Copyright &copy; dotdk.dk, 2006. All Rights reserved.</div>
            </div>
            <div class="footer">
                <asp:Image runat="server" ImageUrl="~/SiteImages/FooterBund.jpg" Width="850" Height="55"
                    ID="FooterImage" /></div>
            <div class="clearer">
            </div>
        </div>
    </form>
</body>
</html>

Når siden køres så siger den at document.form1 is null or not an object.

Er her en som ved hvorfor?
Avatar billede flashit Nybegynder
05. september 2006 - 11:03 #1
Det er denne del som Javascriptet skal Hide/Show:

<!-- Admin div opbygningen starter her-->
           
            <div class="abs">
                <div id="mcpbrev_" class="mcp_app">
                </div>
            </div>
            <div id="mcp_div">
                <div id="Div1" class="mcp_abs">
                    <asp:ContentPlaceHolder ID="AdminPart" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
            </div>
            <!-- Admin div slut-->
Avatar billede mclemens Nybegynder
05. september 2006 - 11:18 #2
Prøv at rette disse linjer:

var tns=document.form1.getElementById("mcp_div").childNodes; // Get all childs

  if(tn=document.form1.getElementById(tns[0].id+"_")){

  tnx=document.form1.getElementById("mcp_div");

til disse linjer:

var tns=document.getElementById("mcp_div").childNodes; // Get all childs

  if(tn=document.getElementById(tns[0].id+"_")){

  tnx=document.getElementById("mcp_div");

(den var måske placeret i en form tidligere?)
Avatar billede flashit Nybegynder
05. september 2006 - 11:43 #3
Gode at "se" dig igen :-)

Nej, men det er den nu
<form id="form1" runat="server">

Hvis jeg gør det, så hænger siden.
Avatar billede flashit Nybegynder
05. september 2006 - 11:45 #4
Men der kommer ingen fejl.
Nok fordi den ikke kan finde noget??
Avatar billede flashit Nybegynder
05. september 2006 - 11:48 #5
Med hænger mener jeg at den ikke bliver færdig med at skrive siden. Der er et timeglas, men der står Done i bunden
Avatar billede mclemens Nybegynder
05. september 2006 - 12:00 #6
Hmm, kigger lige på det iaften... Men, lad os
da slette den kommentar i toppen /* MCP ... */
Det var mere for at jeg havde samlet rodet et sted
(i tilfælde af at jeg opdagede en fejl i det)
... det er forresten ikke kodet ordentligt op imod xml
dom i js da ejg kun kender html dom ordentligt ...
Avatar billede mclemens Nybegynder
05. september 2006 - 12:02 #7
ejg -> jeg
Avatar billede mclemens Nybegynder
05. september 2006 - 12:06 #8
Jeg ved ikke så meget om asp (læs: intet)
men, jeg tror du mangler en name på formen
<form id="form1" runat="server">
->
<form id="form1" name="form1" runat="server">
(id er vist ikke nødvendigt ...)
Avatar billede flashit Nybegynder
05. september 2006 - 12:07 #9
ok, det glæder jeg mig til. Tal :-)
Avatar billede flashit Nybegynder
05. september 2006 - 12:09 #10
"Name" er ikke med i XHTML 1.0 Transitional, den er udgået
Tal :-) = Tak :-)
Avatar billede olebole Juniormester
05. september 2006 - 12:31 #11
<ole>

Nej, name-attributten på form-elementer er _ikke_ udgået af xhtml1.0-Trans  :)

/mvh
</bole>
Avatar billede mclemens Nybegynder
05. september 2006 - 12:52 #12
tror jeg havde glemt en { her:
  }else if(mcperr)alert("The div with id:\n"+tns[0].id+"_\n- was not found");
rettes til:
  }else if(mcperr){alert("The div with id:\n"+tns[0].id+"_\n- was not found");

... ser om jeg kan analysere asp iaften :P
Avatar billede mclemens Nybegynder
05. september 2006 - 18:06 #13
Har lige kastet det oprindelige script ind fra denne tråd:
http://www.eksperten.dk/spm/725183 og taget rettelsen derinde og
rettet scriptet med rettelsen - og rettet navnene på div elementerne ...
... Jeg er som sagt ikke særlig kendt i asp - men kan du bygge videre på denne?
(scriptet er dog ikke programmeret op imod xml dom
med setAttribute og getAttribute o.s.v.)





<%@ Master Language="VB" CodeFile="Site.master.vb" Inherits="Site" %>
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Dotdk. Hvad er .net for noget</title>
 
    <link rel="stylesheet" type="text/css" href="style/style.css" />
 


<style type="text/css">
/* Demo page css */
#brev{border:2px solid #000;width:200px;text-align:center;}
#mcpbrev{border:2px solid #000;border-top:0px;width:200px;background:#aaa;}

#brev2{border:2px solid #000;width:200px;text-align:center;}
#mcpbrev2{border:2px solid #000;border-top:0px;width:200px;background:#888;}


/* Needed for script */
/*.abs{position:absolute;}*/
.mcp_abs{position:absolute;overflow:hidden;}
.mcp_app{position:relative;height:0px;overflow:hidden;}
#mcp_div{position:relative;height:0px;overflow:hidden;}
</style>




<script type="text/javascript">



/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=2; // Amount of pixels used for each change.
mcperr=true; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp={}; // Object for transportation of objects and their properties

window.onload=function(){

// Initiate element gathering onload
var tns=document.getElementById("mcp_div").childNodes; // Get all childs
while(tns.length>0){

  if(tns[0].id){

  // Check if you've made all div's neccessary...
  if(tn=document.getElementById(tns[0].id+"_")){
    mcp[tns[0].id]={
    c:false,r:0, // Set open/close check and running count
    o:tns[0],s:tns[0].style, // Shortcut to object and style
    h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
    };

  tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

  tn.style.height="0px"; // Set height of new parent div element
  tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

  tn.removeChild(tn.childNodes[0]);tn.appendChild(tns[0]); // Move div element

  }else if(mcperr)alert("The div with id:\n"+tns[0].id+"_\n- was not found");

  }
  else{
  tnx=document.getElementById("mcp_div");
  tnx.removeChild(tnx.childNodes[0]);
  }
}

}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut
mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.id+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.id+"',"+mcp2+");",mcpcs);

}
}
</script>





</head>
<body>
    <form id="form1" runat="server">
        <atlas:ScriptManager ID="MainPage" EnablePartialRendering="true" runat="server">
        </atlas:ScriptManager>
        <div id="wrapper">
            <div id="header">
                <asp:Image runat="server" ImageUrl="~/SiteImages/Banner.jpg" ID="dotdkdkBanner" Width="850"
                    Height="94" />
            </div>









         
            <!-- Admin div opbygningen starter her-->
         
            <div class="abs">
                <div id="mcpDiv1_" class="mcp_app">&nbsp;</div>
            </div>
            <div id="mcp_div">
                <div id="mcpDiv1" class="mcp_abs">a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>
                    <asp:ContentPlaceHolder ID="AdminPart" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
            </div>
            <!-- Admin div slut-->



<b onclick="mcppos('Div1',3);">Vis / Skjul</b><br>







         
            <div id="leftcontent">
                <div id="breadcrumb">
                    Home >> Admin >> Blog Kategori
                    <asp:LinkButton ID="LinkButton1" runat="server">test</asp:LinkButton></div>
                <div id="indhold">
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
            </div>
            <div id="rightcontent">
                <div id="menu">
                    <uc1:Menu ID="Menu1" runat="server" />
                </div>
                <br />
            </div>
            <div class="clearer">
            </div>
            <div id="footertop">
                <img src="SiteImages/Bund-Top.jpg" alt="footertop" width="850" height="9" /></div>
            <div class="footer">
                <!-- Footer content goes here-->
                <div id="footerlogo">
                    <asp:Image runat="server" ImageUrl="~/SiteImages/DotdkLogo.jpg" ID="logo" Width="34"
                        Height="35" /></div>
                <div id="footermenu">
                    Home
                    <asp:Image runat="server" ImageUrl="~/SiteImages/FooterSpacing.jpg" ID="spacing1" />
                    Blog
                    <asp:Image runat="server" ImageUrl="~/SiteImages/FooterSpacing.jpg" ID="spacing2" />
                    Foto
                    <asp:Image runat="server" ImageUrl="~/SiteImages/FooterSpacing.jpg" ID="Image3" />
                    Links
                    <asp:Image runat="server" ImageUrl="~/SiteImages/FooterSpacing.jpg" ID="Image4" />
                    Kontakt<br />
                    Copyright &copy; dotdk.dk, 2006. All Rights reserved.</div>
            </div>
            <div class="footer">
                <asp:Image runat="server" ImageUrl="~/SiteImages/FooterBund.jpg" Width="850" Height="55"
                    ID="FooterImage" /></div>
            <div class="clearer">
            </div>
        </div>
    </form>
</body>
</html>
Avatar billede mclemens Nybegynder
05. september 2006 - 18:14 #14
P.s.: Undskyld at jeg ikke så kommentaren i den anden tråd ...
Avatar billede flashit Nybegynder
05. september 2006 - 19:46 #15
Det bliver spændende.
Jeg kan dog først komme til min computer i morgen.. Tak for hjælpen, indtil videre :-)
Avatar billede flashit Nybegynder
05. september 2006 - 20:41 #16
Så kom jeg til min computer.

Det ser du til at virker, næsten da.

2 Ting.
Hvis jeg retter:
<div id="mcpDiv1_" class="mcp_app">&nbsp;</div>
til
<div id="mcpDiv1_" class="mcp_app"></div>

Så virker det ikke.
Men jeg vil jo gerne have at at der ikke komme den hvide streg i mit design.

Den anden ting.
Rettelserne i css'en ødelægger mit design.
<div id="rightcontent"> bliver smidt ned i højre hjørne.
Avatar billede mclemens Nybegynder
05. september 2006 - 21:04 #17
i window.onload funktion rettes

  tn.removeChild(tn.childNodes[0]);tn.appendChild(tns[0]); // Move div element

til:

  tn.appendChild(tns[0]); // Move div element

og slettelse af &nbsp; i det andet element.


[ Den anden ting.
Rettelserne i css'en ødelægger mit design.
<div id="rightcontent"> bliver smidt ned i højre hjørne. ]
Slet evt. rettelserne i css'en? Der var ingen css med i dit indlæg så jeg skulle bruge noget at teste op imod ... M.h.t. hvordan det ser ud, så kan jeg ikke se så meget designmæssigt, da der mangler "demo" css og da det asp forvirrer mig lidt :)
Avatar billede mclemens Nybegynder
05. september 2006 - 21:09 #18
tilrettet:

<script type="text/javascript">

/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=2; // Amount of pixels used for each change.
mcperr=true; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp={}; // Object for transportation of objects and their properties

window.onload=function(){

// Initiate element gathering onload
var tns=document.getElementById("mcp_div").childNodes; // Get all childs
while(tns.length>0){

  if(tns[0].id){

  // Check if you've made all div's neccessary...
  if(tn=document.getElementById(tns[0].id+"_")){
    mcp[tns[0].id]={
    c:false,r:0, // Set open/close check and running count
    o:tns[0],s:tns[0].style, // Shortcut to object and style
    h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
    };

  tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

  tn.style.height="0px"; // Set height of new parent div element
  tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

  tn.appendChild(tns[0]); // Move div element

  }else if(mcperr)alert("The div with id:\n"+tns[0].id+"_\n- was not found");

  }
  else{
  tnx=document.getElementById("mcp_div");
  tnx.removeChild(tnx.childNodes[0]);
  }
}

}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut
mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",mcpcs);

}
}
</script>
Avatar billede mclemens Nybegynder
05. september 2006 - 21:21 #19
Lidt flere rettelser til ovenstående:

  if(tns[0].id){
rettes til:
  if(tns[0].getAttribute('id')){

...

  if(tn=document.getElementById(tns[0].id+"_")){
rettes til:
  if(tn=document.getElementById(tns[0].getAttribute('id')+"_")){

...

    mcp[tns[0].id]={
rettes til:
    mcp[tns[0].getAttribute('id')]={

...

  }else if(mcperr)alert("The div with id:\n"+tns[0].id+"_\n- was not found");
rettes til:
  }else if(mcperr){alert("The div with id:\n"+tns[0].getAttribute('id')+"_\n- was not found");tns[0].parentNode.removeChild(tns[0]);}

...
Avatar billede mclemens Nybegynder
05. september 2006 - 21:23 #20
Hvorfor er xhtml og xml dom så besværligt :/
... Ole, er det her helt hen i vejret ?
Avatar billede flashit Nybegynder
05. september 2006 - 22:20 #21
Hej Igen

Jeg skynder mig lige at takke igen, det er simpelthen suverænt :-)
Jeg kan først teste i morgen, desværre…

Mine unger har overtaget mit kontor, så jeg har ikke VisualStudio tilrådighed.

Tak
/Jakob
Avatar billede mclemens Nybegynder
05. september 2006 - 22:29 #22
Velbekom,
håber det virker,
snakkes imorgen ;)

... javascriptet skal dog lægges ekstern med <script type="text/javascript" src="filnavn.js"></script> ellers skal det cdata escapes ... jeg har lige lagt rettelserne ind - og slettet den window.onload og brugt addEventListener og attachEvent som vist er mere xml dom ...




<script type="text/javascript">

/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=2; // Amount of pixels used for each change.
mcperr=true; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp={}; // Object for transportation of objects and their properties

if(window.addEventListener)window.addEventListener("load", wload, false);
else if(window.attachEvent)window.attachEvent("onload", wload);

function wload(){

// Initiate element gathering onload
var tns=document.getElementById("mcp_div").childNodes; // Get all childs
while(tns.length>0){

  if(tns[0].getAttribute('id')){

  // Check if you've made all div's neccessary...
  if(tn=document.getElementById(tns[0].getAttribute('id')+"_")){
    mcp[tns[0].getAttribute('id')]={
    c:false,r:0, // Set open/close check and running count
    o:tns[0],s:tns[0].style, // Shortcut to object and style
    h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
    };

  tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

  tn.style.height="0px"; // Set height of new parent div element
  tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

  tn.appendChild(tns[0]); // Move div element

  }else if(mcperr){alert("The div with id:\n"+tns[0].getAttribute('id')+"_\n- was not found");tns[0].parentNode.removeChild(tns[0]);}

  }
  else{
  tnx=document.getElementById("mcp_div");
  tnx.removeChild(tnx.childNodes[0]);
  }
}

}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut
mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",mcpcs);

}
}
</script>
Avatar billede flashit Nybegynder
05. september 2006 - 22:37 #23
Sejt... Det ligger eksternt, hvilket ikke er så nemt i asp.net 2.0 da det ikke bare kan includeres som normalt.
Avatar billede mclemens Nybegynder
05. september 2006 - 23:11 #24
Ok, når det lægger eksternt som du skriver
er det ikke et problem, men ellers ser
cdata escaping vist sådan her ud:
<script type="text/javascrip">
<![CDATA[
alert(test);
]]>
</script>

... men da IE ikke understøtter xhtml giver det vist problemer :/



Har lige testet scriptet lidt - hvis jeg fjerner // foran cdata escaping og afslutning samt gemmer filen som .xhtml og kører den med Firefox så sluger Firefox den ikke, så den må mangle noget ...

...

<script type="text/javascript">
//<![CDATA[


/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=2; // Amount of pixels used for each change.
mcperr=true; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp={}; // Object for transportation of objects and their properties

if(window.addEventListener)window.addEventListener("load", wload, false);
else if(window.attachEvent)window.attachEvent("onload", wload);

function wload(){

  // Initiate element gathering onload
  var tns=document.getElementById("mcp_div").childNodes; // Get all childs
  while(tns.length>0){

    if(tns[0].getAttribute('id')){

      // Check if you've made all div's neccessary...
      if(tn=document.getElementById(tns[0].getAttribute('id')+"_")){
        mcp[tns[0].getAttribute('id')]={
          c:false,r:0, // Set open/close check and running count
          o:tns[0],s:tns[0].style, // Shortcut to object and style
          h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
      };

    tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

    tn.style.height="0px"; // Set height of new parent div element
    tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

    tn.appendChild(tns[0]); // Move div element

    }else if(mcperr){alert("The div with id:\n"+tns[0].getAttribute('id')+"_\n- was not found");tns[0].parentNode.removeChild(tns[0]);}

    }else{
      tnx=document.getElementById("mcp_div");
      tnx.removeChild(tnx.childNodes[0]);
    }
  }
}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut

mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",mcpcs);

}
}

//]]>
</script>

...

            <div class="abs">
                <div id="mcpDiv1_" class="mcp_app">&nbsp;</div>
            </div>

            <div id="mcp_div"><div id="mcpDiv1" class="mcp_abs">a<br />a<br />a<br />a<br /></div></div>

<b onclick="mcppos('Div1',3);">Vis / Skjul</b>

...
Avatar billede mclemens Nybegynder
05. september 2006 - 23:28 #25
Sådan fik en test til at virke med cdata escaping - snup scriptet herfra ...
(gem evt. denne fil i notesblok lokalt på maskinen som test.xhtml og åben med firefox (ie understøtter ikke xhtml og derfor ikke cdata escaping i documentet - derfor er den eksterne placering nødvendig (husk at fjerne <![CDATA[ og ]]> )







<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Dotdk. Hvad er .net for noget</title>



<style type="text/css">
/* Demo page css */
#brev{border:2px solid #000;width:200px;text-align:center;}
#mcpbrev{border:2px solid #000;border-top:0px;width:200px;background:#aaa;}

#brev2{border:2px solid #000;width:200px;text-align:center;}
#mcpbrev2{border:2px solid #000;border-top:0px;width:200px;background:#888;}


/* Needed for script */
/*.abs{position:absolute;}*/
.mcp_abs{position:absolute;width:100%;overflow:hidden;}
.mcp_app{position:relative;height:0px;overflow:hidden;}
#mcp_div{position:relative;height:0px;overflow:hidden;}
</style>




<script type="text/javascript">
<![CDATA[


/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=2; // Amount of pixels used for each change.
mcperr=true; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp = {}; // Object for transportation of objects and their properties

if(window.addEventListener)window.addEventListener("load", function(){wload();}, false);
else if(window.attachEvent)window.attachEvent("onload", function(){wload();});

function wload(){

  // Initiate element gathering onload
  var tns=document.getElementById("mcp_div").childNodes; // Get all childs
  while(tns.length>0){

    if(tns[0].getAttribute('id')){

      // Check if you've made all div's neccessary...
      if(tn=document.getElementById(tns[0].getAttribute('id')+"_")){
        mcp[tns[0].getAttribute('id')]={
          c:false,r:0, // Set open/close check and running count
          o:tns[0],s:tns[0].style, // Shortcut to object and style
          h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
      };

    tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

    tn.style.height="0px"; // Set height of new parent div element
    tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

    tn.appendChild(tns[0]); // Move div element

    }else if(mcperr){alert("The div with id:\n"+tns[0].getAttribute('id')+"_\n- was not found");tns[0].parentNode.removeChild(tns[0]);}

    }else{
      tnx=document.getElementById("mcp_div");
      tnx.removeChild(tnx.childNodes[0]);
    }
  }
}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut

mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",mcpcs);

}
}

]]>
</script>





</head>
<body>
    <form id="form1">
       
            <div class="abs">
                <div id="mcpDiv1_" class="mcp_app">&nbsp;</div>
            </div>
            <div id="mcp_div"><div id="mcpDiv1" class="mcp_abs">a<br />a<br />a<br />a<br /></div></div>


<b onclick="mcppos('Div1',3);">Vis / Skjul</b>


    </form>
</body>
</html>
Avatar billede flashit Nybegynder
06. september 2006 - 14:23 #26
Hej... Så har jeg testet, og det er jo super. Jeg ved ikke om jeg må sige det, men der er lige to ting.

Når siden loades så klapper den ikke helt sammen. Det gør den når man klipper på Luk.
Når den er klappet helt sammen så er det en pix luft over. Ved du hvorfor?

Her der top menuen, hvor der er den lille sprække "luft"
<div id="header">
                <asp:Image runat="server" ImageUrl="~/SiteImages/Banner.jpg" ID="dotdkdkBanner" Width="850"
                    Height="94" />
            </div>
            <!-- Admin div opbygningen starter her-->
            <div class="abs">
                <div id="mcpDiv1_" class="mcp_app">
                </div>
            </div>
            <div id="mcp_div">
                <div id="mcpDiv1" class="mcp_abs">
                    <asp:ContentPlaceHolder ID="AdminPart" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
            </div>
Avatar billede flashit Nybegynder
06. september 2006 - 14:28 #27
Bare slet "Når siden loades så klapper den ikke helt sammen. Det gør den når man klipper på Luk." jeg havde ikke fået den del af css'en med som den bruget.

Så nu er det kun den luft over admin delen som driller.
Avatar billede mclemens Nybegynder
06. september 2006 - 14:53 #28
Prøv denne rettelse til den ene wload funktion ...


function wload(){

  // Initiate element gathering onload
  var tns=document.getElementById("mcp_div").childNodes; // Get all childs
  while(tns.length>0){

    if(tns[0].getAttribute('id')){

      // Check if you've made all div's neccessary...
      if(tn=document.getElementById(tns[0].getAttribute('id')+"_")){
        mcp[tns[0].getAttribute('id')]={
          c:false,r:0, // Set open/close check and running count
          o:tns[0],s:tns[0].style, // Shortcut to object and style
          h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
      };

    tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

    tn.style.height="0px"; // Set height of new parent div element
    tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

    tn.appendChild(tns[0]); // Move div element

    }else if(mcperr){alert("The div with id:\n"+tns[0].getAttribute('id')+"_\n- was not found");tns[0].parentNode.removeChild(tns[0]);}

    }else{
      tnx=document.getElementById("mcp_div");
      tnx.removeChild(tnx.childNodes[0]);
    }
  }t=document.getElementById("mcp_div");t.parentNode.removeChild(t); // mcp_div der drillede?<
}
Avatar billede mclemens Nybegynder
06. september 2006 - 15:06 #29
Alternativt kan denne nok også klare det:

function wload(){

  // Initiate element gathering onload
  var tns=document.getElementById("mcp_div").childNodes; // Get all childs
  while(tns.length>0){

    if(tns[0].getAttribute('id')){

      // Check if you've made all div's neccessary...
      if(tn=document.getElementById(tns[0].getAttribute('id')+"_")){
        mcp[tns[0].getAttribute('id')]={
          c:false,r:0, // Set open/close check and running count
          o:tns[0],s:tns[0].style, // Shortcut to object and style
          h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
      };

    tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

    tn.style.height="0px"; // Set height of new parent div element
    tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

    tn.appendChild(tns[0]); // Move div element

    }else if(mcperr){alert("The div with id:\n"+tns[0].getAttribute('id')+"_\n- was not found");tns[0].parentNode.removeChild(tns[0]);}

    }else{
      tnx=document.getElementById("mcp_div");
      tnx.removeChild(tnx.childNodes[0]);
    }
  }t=document.getElementById("mcp_div");t2=document.createTextNode(" ");t.appendChild(t2);
}
Avatar billede mclemens Nybegynder
06. september 2006 - 15:08 #30
IE kikser med det height:0px til tider når der ikke er et element i div'en ...
Det nævnte Ole forleden dag overfor mig - nu ramte jeg så ind i det problem ...
Avatar billede flashit Nybegynder
06. september 2006 - 15:29 #31
Der er ikke et øje tørt.
Det er den vildeste hjælp jeg har fået.

MANGE TAK.
Og så lige at svar :-)
Avatar billede flashit Nybegynder
06. september 2006 - 15:36 #32
SORRY, men det virker ikke I FireFox. Der virker i IE?
Avatar billede flashit Nybegynder
06. september 2006 - 15:44 #33
Avatar billede mclemens Nybegynder
06. september 2006 - 15:57 #34
Hmmm, Firefox og IE håndterer mellemrum forskelligt ... kigger lige, men prøv denne:


<div id="mcp_div"><div id="mcpDiv1" class="mcp_abs">a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a
</div></div>
Avatar billede mclemens Nybegynder
06. september 2006 - 16:02 #35
/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=2; // Amount of pixels used for each change.
mcperr=true; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp = {}; // Object for transportation of objects and their properties

if(window.addEventListener)window.addEventListener("load", function(){wload();}, false);
else if(window.attachEvent)window.attachEvent("onload", function(){wload();});

function wload(){

  // Initiate element gathering onload
  var tns=document.getElementById("mcp_div").childNodes; // Get all childs
  while(tns.length>0){





    if(tns[0].nodeType==1){ // <- tilføjet denne her ( http://www.eksperten.dk/spm/697893 lidt hjælp fra Roenving :) )







    if(tns[0].getAttribute('id')){

      // Check if you've made all div's neccessary...
      if(tn=document.getElementById(tns[0].getAttribute('id')+"_")){
        mcp[tns[0].getAttribute('id')]={
          c:false,r:0, // Set open/close check and running count
          o:tns[0],s:tns[0].style, // Shortcut to object and style
          h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
      };



    tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

    tn.style.height="0px"; // Set height of new parent div element
    tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

    tn.appendChild(tns[0]); // Move div element










// og rettet }else nedenunder til }}else

    }}else if(mcperr){alert("The div with id:\n"+tns[0].getAttribute('id')+"_\n- was not found");tns[0].parentNode.removeChild(tns[0]);}

    }else{
      tnx=document.getElementById("mcp_div");
      tnx.removeChild(tnx.childNodes[0]);
    }
  }t=document.getElementById("mcp_div");t2=document.createTextNode(" ");t.appendChild(t2);
}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut

mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",mcpcs);

}
}
Avatar billede mclemens Nybegynder
06. september 2006 - 16:03 #36
Problemet var at den ellers kunne forsøge på at tage
id fra en textNode i Firefox, og det gav baladen :o)
Avatar billede mclemens Nybegynder
06. september 2006 - 16:08 #37
En lille retter mere...


/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=2; // Amount of pixels used for each change.
mcperr=true; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp = {}; // Object for transportation of objects and their properties

if(window.addEventListener)window.addEventListener("load", function(){wload();}, false);
else if(window.attachEvent)window.attachEvent("onload", function(){wload();});

function wload(){

  // Initiate element gathering onload
  var tns=document.getElementById("mcp_div").childNodes; // Get all childs
  while(tns.length>0){





    if((tns[0].nodeType==1)&&(tns[0].getAttribute('id'))){ // <- tilføjet denne her ( http://www.eksperten.dk/spm/697893 lidt hjælp fra Roenving :) )


      // Check if you've made all div's neccessary...
      if(tn=document.getElementById(tns[0].getAttribute('id')+"_")){
        mcp[tns[0].getAttribute('id')]={
          c:false,r:0, // Set open/close check and running count
          o:tns[0],s:tns[0].style, // Shortcut to object and style
          h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
      };



    tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

    tn.style.height="0px"; // Set height of new parent div element
    tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

    tn.appendChild(tns[0]); // Move div element

    }else if(mcperr){alert("The div with id:\n"+tns[0].getAttribute('id')+"_\n- was not found");tns[0].parentNode.removeChild(tns[0]);}

    }else{
      tnx=document.getElementById("mcp_div");
      tnx.removeChild(tnx.childNodes[0]);
    }
  }t=document.getElementById("mcp_div");t2=document.createTextNode(" ");t.appendChild(t2);
}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut

mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.getAttribute('id')+"',"+mcp2+");",mcpcs);

}
}
Avatar billede flashit Nybegynder
06. september 2006 - 16:11 #38
NICE. Tak tak tak
Avatar billede mclemens Nybegynder
06. september 2006 - 16:44 #39
Velbekom :)
Avatar billede mclemens Nybegynder
06. september 2006 - 17:10 #40
Og tak for point :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester