会社の FAQ セクションに HTML5 タグの詳細を使用しています。問題は、ユーザーが別の質問を開いた場合、他の質問が自動的に閉じないことでした。したがって、Webで検索したところ、次の解決策が見つかりました。
function thisindex(elm){
var nodes = elm.parentNode.childNodes, node;
var i = 0, count = i;
while( (node=nodes.item(i++)) && node!=elm )
if( node.nodeType==1 ) count++;
return count;
}
function closeAll(index){
var len = document.getElementsByTagName("details").length;
for(var i=0; i<len; i++){
if(i != index){
document.getElementsByTagName("details")[i].removeAttribute("open");
}
}
}
このコードはある意味で正しく機能しますが、いくつかの小さな問題があります。2 つの質問を同時に開き、おかしな動作をすることがあります。これが適切に機能する方法はありますか?これは、デスクトップ、タブレット、モバイルで動作するはずです。
望ましくない影響:
すべてのコードでフィドルhttp://jsfiddle.net/877tm/を作成しました。JavaScript はそこで動作しています。ライブで見たい場合は、ここをクリックしてください。