wally_91Medlem sedan feb. 2006488 inlägg
Hej wF!
Jag har en funktion som visar en dold div. Det funkade i Fx och i IE men nu gör det inte det. Det har funkat i IE 6 och fx 2. Har inte provat i IE 7 än. Symptomen är att när man trycker "Innehållsföreteckning (klicka för att visa)" skickas man upp till toppen och diven visas inte. Om man trycker ett antal gånger på "Innehållsföreteckning" visas diven tillslut men man kan inte ha det så i slutändan.
showhide.js
<!--
var state = 'none';
function showhide(layer_ref) {
if (state == 'block') {
state = 'none';
}
else {
state = 'block';
}
if (document.all) { //IS IE 4 or 5 (or 6 beta)
eval( "document.all." + layer_ref + ".style.display = state");
}
if (document.layers) { //IS NETSCAPE 4 or below
document.layers[layer_ref].display = state;
}
if (document.getElementById &&!document.all) {
hza = document.getElementById(layer_ref);
hza.style.display = state;
}
}
//-->
Koden jag använder på min sida.
<a href="#" onclick="showhide('innehall');">Innehållföreteckning (klicka för att visa)</a><br>
<div id="innehall" style="display: none; font-size: 13;">bla bla bla</div>
Tack för all hjälp och en fortsatt revlig kväll!
//wally_91
nitro2k01Medlem sedan aug. 20037 630 inlägg
Uschamej, vilken ful kod! Netscape 4 är död och begraven sen länge, och IE stödjer sedan version document.getElementById. Alltså är det den enda metod du behöver använda.
<script type="text/javascript">
function showhide(id){
var lref=document.getElementById(id).style;
lref.display=(lref.display=='none')?'':'none';
}
</script>
<a href="javascript:;;" onclick="showhide('innehall');">Innehållföreteckning (klicka för att visa)</a><br>
<div id="innehall" style="display: none; font-size: 13;">bla bla bla</div>
Detta bör funka som det ska. (Notera även ändringen i href.)
wally_91Medlem sedan feb. 2006488 inlägg
Perfekt nitro2k01! Precis det jag letade efter!
Passar på att låna tråden för en kort fråga, igen med javascript.
<script language"javascript">
function nyttfonster()
{
window.open('bblist.php','BBkod lista','width=400,height=280,resizable=yes,status=yes');
}
</script>
<br />
Funkar lika bra med stora som små bokstäver.
För hela listan, <a href="javascript:nyttfonster()">klicka här</a>.
</div>
Denna kod fungerar bra i fx men inte i IE där jag får felet Sidan innehåller fel :/
nitro2k01Medlem sedan aug. 20037 630 inlägg
Det enda jag kan se är att andra argumentet innehåller ett mellanslag, vilket det inte får göra. Det andra argumentet du ger window.open motsvarar target="" i en länk. Alltså ska du inte sätta nåt där som du inte skulle sätta i target.
Du kan exempelvis ge _blank till det andra argumentet. Men jag rekommenderar i ditt fall nåt värde, t ex bbkodlista, vilket gör att om besökaren klickar flera gånger på samma länk öppnas länken i samma fönster, istället för ett nytt för varje klick.
wally_91Medlem sedan feb. 2006488 inlägg
Tack ännu en gång! Du hjälpte mig igen!
silfverMedlem sedan apr. 20039 709 inlägg
nitro2k01: Jag har en följdfråga på den här tekniken. Kan man samtidigt som man öppnar en div, bli länkad till ett bokmärke?
Alltså så här:
<a href="#contact">contact me</a>
<div id="contact">
Länka mig hit, samt öppna div.
</div>
nitro2k01Medlem sedan aug. 20037 630 inlägg
<script type="text/javascript">
function showhide(href){
var id=href.substr(href.lastIndexOf("#")+1);
var lref=document.getElementById(id).style;
lref.display=(lref.display=='none')?'':'none';
if (lref.display == 'none')
return false;
}
</script>
<a href="#contact" onclick="return showhide(this.href);">contact me</a>
<div id="contact">
Länka mig hit, samt öppna div.
</div>
silfverMedlem sedan apr. 20039 709 inlägg
nitro2k01: Får det inte att fungera. Visas div:en dold som default nu eller ska den visas? Med din kod så visas den hela tiden.
https://www.silfvercreations.com <- där har jag den nu. Jag vill dölja text med formulär.
r/ Klickar jag på länken så döljs div:en. Men jag vill ha det tvärt om. Att den är dold först och efter klick visas den. :)
nidronMedlem sedan jan. 2005209 inlägg
Om ursprungsläget är att div:en ska vara dold kan du komplettera med:
<div id="contact" style="display:none;">
Länka mig hit, samt öppna div.
</div>
Eller ptja, pilla gärna in det i den externa stilmallen, men jag tror du förstår konceptet :)
nitro2k01Medlem sedan aug. 20037 630 inlägg
<div id="contact" style="display: none;">
Så.
Iofs går det säkert att lösa bättre med jQuery, jag har dock inte koll på exakt hur.
silfverMedlem sedan apr. 20039 709 inlägg
Perfekt. Tack ska du ha nitro! :bire
nitro2k01Medlem sedan aug. 20037 630 inlägg
nidron skrev:
Eller ptja, pilla gärna in det i den externa stilmallen, men jag tror du förstår konceptet :)
Då kommer inte min kod att funka eftersom lref.display kommer läsas som en tom sträng, inte none. display: none; måste stå i elementets style-attribut.
silfverMedlem sedan apr. 20039 709 inlägg
nidron: Missade ditt inlägg, du skrev ju faktiskt samma sak som nitro. Det ligger i php-filen av den anledningen som nitro skrev. :) r/ vilken jobbig mening jag skrev.
nidronMedlem sedan jan. 2005209 inlägg
nitro: Det har du nog förbaskat rätt i. Jag satt precis med min egen funktion som påminner om din, men som använder visibility-propertien istället och som även kollar om strängen är tom, sorry :)
silfver: Det var nog lika bra att du missade det ;)