_<table>
_の_<a>
_ onClick
イベントを表示および非表示(トグル)したい。これは私の_<a>
_タグです
_<a id="loginLink" onclick="toggleTable(true);" href="#">Login</a>
_
ここに私のJavaスクリプト関数toggleTable(hide)
_ <script>
function toggleTable(hide)
{
if (hide) {
document.getElementById("loginTable").style.display="table";
document.getElementById("loginLink").onclick = toggleTable(false);
} else {
document.getElementById("loginTable").style.display="none";
document.getElementById("loginLink").onclick = toggleTable(true);
}
}
</script>
_
ここに私の_<table>
_タグがあります
_<table id="loginTable" border="1" align="center" style="display:none">
_
初めて_<a> link
_をクリックすると、テーブルが表示されますが、次回クリックしたときに非表示になりません。私が間違っていること。
同じ関数呼び出し内でonclick
の動作を変更しようとしています。このようにしてみてください:
<a id="loginLink" onclick="toggleTable();" href="#">Login</a>
function toggleTable() {
var lTable = document.getElementById("loginTable");
lTable.style.display = (lTable.style.display == "table") ? "none" : "table";
}
Jqueryを使用して簡単に
<script>
$(document).ready(function() {
$('#loginLink').click(function() {
$('#loginTable').toggle('slow');
});
})
</script>
次のように関数を変更する必要があります。
function toggleTable()
{
if (document.getElementById("loginTable").style.display == "table" ) {
document.getElementById("loginTable").style.display="none";
} else {
document.getElementById("loginTable").style.display="table";
}
現在、boolean
パラメータに基づいてチェックしているため、関数でパラメータを渡す必要はありません。
アンカータグを次のように変更する必要があります。
<a id="loginLink" onclick="toggleTable();" href="#">Login</a>
この行を実行すると、関数toggleTable
内で
document.getElementById("loginLink").onclick = toggleTable(....
実際に関数を再度呼び出しています。 toggleTable
が何度も呼び出され、何度も何度も繰り返し再帰呼び出しに陥っています。
それを簡単に。
function toggleTable()
{
var elem=document.getElementById("loginTable");
var hide = elem.style.display =="none";
if (hide) {
elem.style.display="table";
}
else {
elem.style.display="none";
}
}
こちらをご覧ください fiddle
アンカータグは次のとおりです。
<a id="loginLink" onclick="showHideTable();" href="#">Login</a>
そして、あなたはJavaScript関数:
function showHideTable()
{
if (document.getElementById("loginTable").style.display == "none" ) {
document.getElementById("loginTable").style.display="";
} else {
document.getElementById("loginTable").style.display="none";
}
visibility
プロパティは、要素を表示または非表示にします。
function showTable(){
document.getElementById('table').style.visibility = "visible";
}
function hideTable(){
document.getElementById('table').style.visibility = "hidden";
}
常にtrueをtoggleMethodに渡すため、常にテーブルが「表示」されます。代わりにトグルメソッド内で反転できるグローバル変数を作成します。
または、明示的な変数の代わりにテーブルの可視性状態を確認できます
試して
<script>
function toggleTable()
{
var status = document.getElementById("loginTable").style.display;
if (status == 'block') {
document.getElementById("loginTable").style.display="none";
} else {
document.getElementById("loginTable").style.display="block";
}
}
</script>