2016-07-06 5 views
0

Ich muss das display Stilattribut für eine gegebene div überprüfen. Im folgenden Dokument wird das Attribut display beider Divs durch css (eins zu none, das andere zu block) und später durch Javascript gesetzt, wenn auf die Schaltfläche geklickt wird, aber div.style.display ist leer, solange es nicht vom Skript festgelegt wurde (daher auch) Ich brauche zwei Klicks auf die Tasten, um die richtigen Werte zu erhalten.Falsches 'Anzeige'-Stil-Attribut

function myFunction() { 
 
    document.getElementById("dispa").innerHTML = document.getElementById("mydiva").style.display; 
 
    document.getElementById("mydiva").style.display = "none"; 
 
    document.getElementById("dispb").innerHTML = document.getElementById("mydivb").style.display; 
 
    document.getElementById("mydivb").style.display = "none"; 
 
}
 #mydiva { 
 
     display:block; 
 
     } 
 
     #mydivb { 
 
     display:none; 
 
     }
<button onclick="myFunction()" id="b">See</button> 
 
<p id="dispa">display</p> 
 
<div id="mydiva"> 
 
    sample div a 
 
</div> 
 
<p id="dispb">display</p> 
 
<div id="mydivb"> 
 
    sample div b 
 
</div>

Hinweis: in meinem Projekt, das Lesen von display ist in window.onload, nicht durch Tastendruck, aber die Ergebnisse sind die gleichen geschehen.

+0

warum nicht nur tun es mit CSS Hover, aktiv und konzentrieren sich mit? –

+0

Verwenden Sie 'getComputedStyle()' –

+0

@ MarcosPérezGude Das hat funktioniert! Vielen Dank! –

Antwort

0

Sie können die display Stil erhalten Sie die Funktion unter

function myFunction() { 
 
    document.getElementById("dispa").innerHTML = getDisplayStyle("mydiva"); 
 
    document.getElementById("mydiva").style.display = "none"; 
 
    document.getElementById("dispb").innerHTML = getDisplayStyle("mydivb"); 
 
    document.getElementById("mydivb").style.display = "none"; 
 
} 
 

 
function getDisplayStyle(elementId) { 
 
    var element = document.getElementById(elementId) 
 
    return element.currentStyle ? element.currentStyle.display : 
 
    getComputedStyle(element, null).display; 
 
}
#mydiva { 
 
    display: block; 
 
} 
 
#mydivb { 
 
    display: none; 
 
}
<button onclick="myFunction()" id="b">See</button> 
 
<p id="dispa">display</p> 
 
<div id="mydiva"> 
 
    sample div a 
 
</div> 
 
<p id="dispb">display</p> 
 
<div id="mydivb"> 
 
    sample div b 
 
</div>

0
<p id="dispa">display</p> 
<div id="mydiva" style="display:none;"> 
    sample div a 
</div> 
<p id="dispb">display</p> 
<div id="mydivb"> 
    sample div b 
</div> 




<script> 
$(document).ready(function(){ 
    $("#b").click(function(){ 
     $("#mydiva").toggle(); 
     $("#mydivb").toggle(); 
    }); 
}); 
</script> 

Ist das, was Sie versuchen zu tun?

+0

Ja, aber ohne jQuery (das ist das '' '' Zeug geht es, oder? Ich bin ein totaler Noob in Javascript). –