最近のshow/hidden javascriptでは、HTML5のdata-*属性を使用することを好みます。
これは、getAttributeおよびsetAttribute関数を介してHTML5以外のブラウザーですでに使用できます。
IE7、Chrome、Operaに対してすぐに試してみましたが、うまくいくようです。
http://jsfiddle.net/ThJcb/
function showHide(shID) {
var exDiv = document.getElementById(shID);
if(exDiv.getAttribute("data-visible") != 'false'){
document.getElementById(shID+'-show').style.cssText = ';height:auto;opacity:1;visibility:visible;';
document.getElementById(shID).style.cssText = ';height:0;opacity:0;visibility:hidden;';
exDiv.setAttribute("data-visible" , 'false');
} else {
document.getElementById(shID+'-show').style.cssText = ';height:;opacity:0;visibility:hidden;';
document.getElementById(shID).style.cssText = ';height:auto;opacity:1;visibility: visible ;';
exDiv.setAttribute("data-visible" , 'true');
}
}
これにより、CSS値をチェックしなくてもdivの状態を判断できます。
編集:コメントで指摘されているように、タイプミスが非表示リンク(onclickではなくonlick)にあり、上記のjsfiddleが機能しているように見えましたが、機能していませんでした。少なくとも、ロジックでエラーを起こしたのとまったく同じではなく、「data-visible」をtrueではなくfalseに設定しました。
更新されたjsfiddleは次のとおりです:http://jsfiddle.net/ThJcb/4/ (
上記のjavascriptスニペットも更新されました)