Jesper TMedlem sedan nov. 20017 058 inlägg
Skulle behöva göra detta script mer crossbrowserkompatibelt om det går.
function folder_ondblclick(element) {
var oUL = element.all.tags("UL")[0];
if (element.className == "folder_closed")
element.className = "folder_open";
else
element.className = "folder_closed";
if (oUL != null) {
if (oUL.style.display == "none")
oUL.style.display = "";
else
oUL.style.display = "none";
}
window.event.cancelBubble = true;
}
Peter SMedlem sedan dec. 20025 484 inlägg
Jesper TMedlem sedan nov. 20017 058 inlägg
Åhhh, tack!
Peter S skrev:
Sätt ett id på "ul"-elementet
På alla ul-element?
Skicka sedan in event som det andra argumentet till funktionen.
Hur gör jag det?
Kör funktionen med detta:
ondblclick=folder_ondblclick(this,event)
Men det smäller här i javascriptet:
"style.display" är Null eller inte ett object
if (oUL.style.display == "none")
Peter SMedlem sedan dec. 20025 484 inlägg
Jesper TMedlem sedan nov. 20017 058 inlägg
Smäller här nu: e.cancelBubble = true;
"undefined" är Null eller inte ett object
Använder din ändring och det första <ul> har id:t "foo":
<ul id="foo">
Peter SMedlem sedan dec. 20025 484 inlägg
Skickar du in event som det andra argumentet? Hur anropar du funktionen?
:)
Jesper TMedlem sedan nov. 20017 058 inlägg
Så här: folder_ondblclick(this)
Om jag skriver folder_ondblclick(this,event)
Så blir sidan tom och det kommer inget felmeddelande.
Peter SMedlem sedan dec. 20025 484 inlägg
Jesper TMedlem sedan nov. 20017 058 inlägg
<script type="text/javascript" language="javascript">
<!--
function folder_ondblclick(element, e) {
var oUL = ( document.all ) ? document.all[ "foo" ] : ( document.getElementById ) ? document.getElementById( "foo" ) : null;
if( oUL ){
if (element.className == "folder_closed")
element.className = "folder_open";
else
element.className = "folder_closed";
if (oUL != null) {
if (oUL.style.display == "none")
oUL.style.display = "";
else
oUL.style.display = "none";
}
}
if( window.event )
e.cancelBubble = true;
else if( e.stopPropagation )
e.stopPropagation();
}
//-->
</script>
<UL id=foo>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>docs
<UL style=display:none;>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>abc
<UL style=display:none;>
<LI class=file><img src=imgs/ico_all.gif width=20 height=17>aaa</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>berit
<UL style=display:none;>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>Submeny</LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>Submeny2
<UL style=display:none;>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>Test</LI></UL></LI>
<LI class=file><img src=imgs/ico_img.gif width=20 height=17>bild</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>cba
<UL style=display:none;>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>test</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>Elin
<UL style=display:none;>
<LI class=file><img src=imgs/ico_doc.gif width=20 height=17>Elin</LI>
<LI class=file><img src=imgs/ico_code.gif width=20 height=17>jeppe</LI></UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>Jesper</LI>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>test</LI>
</UL></LI></UL>
Peter SMedlem sedan dec. 20025 484 inlägg
Det är väl klart att sidan blir tom eftersom koden säger att synligheten för elementet med id foo skall bli "none" vid ett dubbelklick. ;)
:)
Jesper TMedlem sedan nov. 20017 058 inlägg
Du sa ju att jag skulle sätta id=foo på första ul-elementet.
Hur skall jag göra då?
Sätter jag id="foo" på de andra ullarna så får jag error.
Peter SMedlem sedan dec. 20025 484 inlägg
Jesper TMedlem sedan nov. 20017 058 inlägg
fel, fel, fel :P ;)
Det funkade finfint i I.E. 6 förut.
Här kommer hela den koden:
<script>
function folder_ondblclick(element) {
var oUL = element.all.tags("UL")[0];
if (element.className == "folder_closed")
element.className = "folder_open";
else
element.className = "folder_closed";
if (oUL != null) {
if (oUL.style.display == "none")
oUL.style.display = "";
else
oUL.style.display = "none";
}
window.event.cancelBubble = true;
}
</script>
<UL id=foo>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>docs
<UL style=display:none;>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>abc
<UL style=display:none;>
<LI class=file><img src=imgs/ico_all.gif width=20 height=17>aaa</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>berit
<UL style=display:none;>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>Submeny</LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>Submeny2
<UL style=display:none;>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>Test</LI></UL></LI>
<LI class=file><img src=imgs/ico_img.gif width=20 height=17>bild</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>cba
<UL style=display:none;>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>test</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>Elin
<UL style=display:none;>
<LI class=file><img src=imgs/ico_doc.gif width=20 height=17>Elin</LI>
<LI class=file><img src=imgs/ico_code.gif width=20 height=17>jeppe</LI></UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>Jesper</LI>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>test</LI>
</UL></LI></UL>
Peter SMedlem sedan dec. 20025 484 inlägg
Ahh, sorry. Jag läste fel i din första kod :r
Så här blir det:
<script>
function folder_ondblclick(element, e) {
var oUL = ( document.all ) ? element.all.tags( "ul" )[ 0 ] : ( document.getElementsByTagName ) ? element.getElementsByTagName( "ul" )[ 0 ] : null;
if( oUL ){
if (element.className == "folder_closed")
element.className = "folder_open";
else
element.className = "folder_closed";
if (oUL != null) {
if (oUL.style.display == "none")
oUL.style.display = "";
else
oUL.style.display = "none";
}
}
if( window.event )
e.cancelBubble = true;
else if( e.stopPropagation )
e.stopPropagation();
}
</script>
Skicka sedan in event som andra argument vid funktionsanropet :bire
:)
Jesper TMedlem sedan nov. 20017 058 inlägg
Woooo! Tack, funkar finfint.
I vilka browsrar tror du?
Peter SMedlem sedan dec. 20025 484 inlägg
MSIE 5-6, Netscape 6-7, Mozilla och Opera 7 skulle jag tro att detta fungerar i.
:)
Jesper TMedlem sedan nov. 20017 058 inlägg
Med risk för att bli tjatig.
Finns det något sätt att öppna vissa foldrar i "body onload"?
Peter SMedlem sedan dec. 20025 484 inlägg
Självklart. Det enklaste är väl dock att ta bort style=display:none; från de "ul"-element du vill skall synas då sidan laddats klart? Annars kan du sätta ett id på det/de "ul"-element du vill skall synas och lägga till följande:
window.onload = function(){
var elm = ( document.all ) ? document.all[ "foo" ] : ( document.getElementById ) ? document.getElementById( "foo" ) : null;
elm.style.display = "";
};
:)
Jesper TMedlem sedan nov. 20017 058 inlägg
Mycket tack. (Det blir nog att plocka bort "display:none" det verkar lättast ;))