リンクをクリックすると複数コンテンツが切り替わる×9 javascript
参考サンプル
http://gootara-illustration.hp.infoseek.co.jp/ta …
このようなスイッチ切り替えのモノを9組同じページで可能なjavascriptを探しています。
初心者の私にも分かるように説明していただけないでしょうか?
前回スレ
http://oshiete.goo.ne.jp/qa/6023200.html
ここで
http://www.kminek.pl/lab/yetii/
と言うサイトを紹介してもらったのですが
海外サイトで翻訳通しても
カスタマイズの仕方がいまいち分かりませんでした。
(バカです。)
直接、scriptの改造の仕方か
もう少し分かりやすいサイトを教えてください。
どうぞよろしくお願いします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
>>No.6
DOM要素のプロパティになってしまってるのがちょっとアレか。(独り言)
一応訂正しておきます。
// 改変ここから
var group = getElementsByClass('div', 'group'); // グループリスト
var len = group.length;
for (var k = 0; k < len; k++) {
// 切り替え用テキストが書かれた要素、span class="switched-text"を抽出[
var obj = {};
obj.elem = group[k];
obj.elS = getElementsByClass.call(obj.elem, 'span', 'switched-text');
obj.elS_2 = getElementsByClass.call(obj.elem, 'span', 'switched2-text');
obj.elS_3 = getElementsByClass.call(obj.elem, 'span', 'switched3-text');
// 切り替えボタンの要素、div class="switch-text"を抽出してonclickイベントを追加
// 追記:span要素に変更しています
getElementsByClass.call(obj.elem, 'span', 'switch-text',
function(i) {
var self = obj;
this.onclick = function() {
addClassName('display-none', self.elS);
removeClassName('display-none', self.elS[i]);
addClassName('display-none', self.elS_2);
removeClassName('display-none', self.elS_2[i]);
addClassName('display-none', self.elS_3);
removeClassName('display-none', self.elS_3[i]);
};
});
}
// 改変ここまで 以下変更なし
http://detail.chiebukuro.yahoo.co.jp/qa/question …
スクリプトの出所はここですか。
No.6
- 回答日時:
グループ化して処理できるように改変しています。
//----- スクリプトはここから -----
// CSS
document.write(
'<style type="text/css">'
+ '.display-none { display: none; }'
+ 'span.switch-text { cursor: pointer; text-decoration: underline; }'
+ '</style>'
);
(function() {
var l = function () {
// 改変ここから
var group = getElementsByClass('div', 'group'); // グループリスト
var len = group.length;
var elem;
for (var k = 0; k < len; k++) {
// 切り替え用テキストが書かれた要素、span class="switched-text"を抽出
elem = group[k];
elem.elS = getElementsByClass.call(elem, 'span', 'switched-text');
elem.elS_2 = getElementsByClass.call(elem, 'span', 'switched2-text');
elem.elS_3 = getElementsByClass.call(elem, 'span', 'switched3-text');
// 切り替えボタンの要素、div class="switch-text"を抽出してonclickイベントを追加
// 追記:span要素に変更しています
getElementsByClass.call(elem, 'span', 'switch-text',
function(i) {
var self = elem;
this.onclick = function() {
addClassName('display-none', self.elS);
removeClassName('display-none', self.elS[i]);
addClassName('display-none', self.elS_2);
removeClassName('display-none', self.elS_2[i]);
addClassName('display-none', self.elS_3);
removeClassName('display-none', self.elS_3[i]);
};
});
}
// 改変ここまで 以下変更なし
// クラス名を追加する関数。
// className: 追加したいクラス名
// el: クラス名を追加する要素(または要素のリスト)
html:
<div class="group"><!-- グループ化 -->
~
<div>
<div class="group"><!-- グループ化 -->
~
<div>
No.5
- 回答日時:
数はいくつでも可
レイアウトはしてないので適宜やってください
文字数制限のため説明はなし
<html lang="ja">
<head><title>test</title>
<style type="text/css">
div { padding:3px; }
div#test1, div#test2 {margin:10px;width:300px;border:2px solid #ccc;}
div.tab a {background-color:#ffa;}
</style>
</head>
<body>
<div id="test1">
<div class="tab">
<a href="#group1">test1</a><br>
<a href="#group2">test2</a><br>
<a href="#group3">test3</a>
</div>
<span>non-class Text</span>
<div>
<span class="group1">text1-1</span>
<span class="group2">text2-1</span>
<span class="group3">text3-1</span>
</div>
</div>
<div id="test2">
<div>
<span class="groupA">textA-1</span>
<span class="groupB">textB-1</span>
</div>
<div>
non-class text
</div>
<div>
<div class="groupA"><a href="http://www.google.co.jp/">LinkA-3</a></div>
<div class="groupB"><a href="http://www.yahoo.co.jp/index.html">LinkB-3</a></ …
</div>
<div>
<div class="groupB">textB-2</div>
<div class="groupA">textA-2</div>
</div>
<div class="tab">
<a href="#groupA">testA</a><br>
<a href="#groupB">testB</a>
</div>
</div>
<script type="text/javascript">
<!--
(function(ids) {
var i,j,e,elm,id=[];
ids=ids.split(",");
for (i=0;i<ids.length;i++){
if (elm=document.getElementById(ids[i])){
id[ids[i]]=true;
e=elm.getElementsByTagName("*");
for(j=0;j<e.length;j++) if(e[j].className&&e[j].className.match(/(?:^| )(group.+?)(?: |$)/))break;
if (e[j])change(elm,RegExp.$1);
}
}
ids=null;
if (id){
try{
document.addEventListener("click",function(e){func(e)},false);
}catch(e){
document.attachEvent("onclick",function(e){func(e)});
}
}
function func(evt){
var t=evt.target||evt.srcElement;
if (t.nodeName!="A"||!t.href.match(/(?:#)(group.+?)$/))return;
var p=t.parentNode,g=RegExp.$1;
while(p&&!id[p.id]) p=p.parentNode;
if (!p)return;
change(p,g);
}
function change(obj,group){
var i=0,e,elm=obj.getElementsByTagName("*");
while(e=elm[i++]) if(e.className&&e.className.match(/(?:^| )(group.+?)(?: |$)/))e.style.display=RegExp.$1==group?"":"none";
}
})("test1,test2");
//-->
</script>
</body>
</html>
No.4
- 回答日時:
----さらに続く-----------
<div id="tabs7">
<ul>
<li><a href="#tabs7-1">タブ7</a></li>
<li><a href="#tabs7-2">タブ8</a></li>
<li><a href="#tabs7-3">タブ9</a></li>
</ul>
<div id="tabs7-1">
<ul>
<li><a href="#content-7-1">コンテンツ7-1</a></li>
<li><a href="#content-7-2">コンテンツ7-2</a></li>
<li><a href="#content-7-3">コンテンツ7-3</a></li>
</ul>
<div id='content-7-1'>
<p>テキスト7-1</p>
</div>
<div id='content-7-2'>
<p>テキスト7-2</p>
</div>
<div id='content-7-3'>
<p>テキスト7-3</p>
</div>
</div>
<div id="tabs7-2">
<ul>
<li><a href="#content-8-1">コンテンツ8-1</a></li>
<li><a href="#content-8-2">コンテンツ8-2</a></li>
<li><a href="#content-8-3">コンテンツ8-3</a></li>
</ul>
<div id='content-8-1'>
<p>テキスト8-1</p>
</div>
<div id='content-8-2'>
<p>テキスト8-2</p>
</div>
<div id='content-8-3'>
<p>テキスト8-3</p>
</div>
</div>
<div id="tabs7-3">
<ul>
<li><a href="#content-9-1">コンテンツ9-1</a></li>
<li><a href="#content-9-2">コンテンツ9-2</a></li>
<li><a href="#content-9-3">コンテンツ9-3</a></li>
</ul>
<div id='content-9-1'>
<p>テキスト9-1</p>
</div>
<div id='content-9-2'>
<p>テキスト9-2</p>
</div>
<div id='content-9-3'>
<p>テキスト9-3</p>
</div>
</div>
</div>
</body>
終わり
No.3
- 回答日時:
----続き------
<div id="tabs4">
<ul>
<li><a href="#tabs4-1">タブ4</a></li>
<li><a href="#tabs4-2">タブ5</a></li>
<li><a href="#tabs4-3">タブ6</a></li>
</ul>
<div id="tabs4-1">
<ul>
<li><a href="#content-4-1">コンテンツ4-1</a></li>
<li><a href="#content-4-2">コンテンツ4-2</a></li>
<li><a href="#content-4-3">コンテンツ4-3</a></li>
</ul>
<div id='content-4-1'>
<p>テキスト4-1</p>
</div>
<div id='content-4-2'>
<p>テキスト4-2</p>
</div>
<div id='content-4-3'>
<p>テキスト4-3</p>
</div>
</div>
<div id="tabs4-2">
<ul>
<li><a href="#content-5-1">コンテンツ5-1</a></li>
<li><a href="#content-5-2">コンテンツ5-2</a></li>
<li><a href="#content-5-3">コンテンツ5-3</a></li>
</ul>
<div id='content-5-1'>
<p>テキスト5-1</p>
</div>
<div id='content-5-2'>
<p>テキスト5-2</p>
</div>
<div id='content-5-3'>
<p>テキスト5-3</p>
</div>
</div>
<div id="tabs4-3">
<ul>
<li><a href="#content-6-1">コンテンツ6-1</a></li>
<li><a href="#content-6-2">コンテンツ6-2</a></li>
<li><a href="#content-6-3">コンテンツ6-3</a></li>
</ul>
<div id='content-6-1'>
<p>テキスト6-1</p>
</div>
<div id='content-6-2'>
<p>テキスト6-2</p>
</div>
<div id='content-6-3'>
<p>テキスト6-3</p>
</div>
</div>
</div>
----足りんかった、続く----
No.2
- 回答日時:
どのライブラリー使ってもたぶん出来るんだと思いますが、
jQueryのUI Tabsを使って
回答2分割
---その1----
<head>
<link type="text/css" href="jquery.ui.all.css" media="screen" rel="stylesheet">
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery-ui-1.8.2.custom.min.js"></script>
<script type="text/javascript">
$(function(){
$('#tabs1').tabs();
$('#tabs1-1').tabs();
$('#tabs1-2').tabs();
$('#tabs1-3').tabs();
$('#tabs4').tabs();
$('#tabs4-1').tabs();
$('#tabs4-2').tabs();
$('#tabs4-3').tabs();
$('#tabs7').tabs();
$('#tabs7-1').tabs();
$('#tabs7-2').tabs();
$('#tabs7-3').tabs();
});
</script>
</head>
<body>
<div id="tabs1">
<ul>
<li><a href="#tabs1-1">タブ1</a></li>
<li><a href="#tabs1-2">タブ2</a></li>
<li><a href="#tabs1-3">タブ3</a></li>
</ul>
<div id="tabs1-1">
<ul>
<li><a href="#content-1-1">コンテンツ1-1</a></li>
<li><a href="#content-1-2">コンテンツ1-2</a></li>
<li><a href="#content-1-3">コンテンツ1-3</a></li>
</ul>
<div id='content-1-1'>
<p>テキスト1-1</p>
</div>
<div id='content-1-2'>
<p>テキスト1-2</p>
</div>
<div id='content-1-3'>
<p>テキスト1-3</p>
</div>
</div>
<div id="tabs1-2">
<ul>
<li><a href="#content-2-1">コンテンツ2-1</a></li>
<li><a href="#content-2-2">コンテンツ2-2</a></li>
<li><a href="#content-2-3">コンテンツ2-3</a></li>
</ul>
<div id='content-2-1'>
<p>テキスト2-1</p>
</div>
<div id='content-2-2'>
<p>テキスト2-2</p>
</div>
<div id='content-2-3'>
<p>テキスト2-3</p>
</div>
</div>
<div id="tabs1-3">
<ul>
<li><a href="#content-3-1">コンテンツ3-1</a></li>
<li><a href="#content-3-2">コンテンツ3-2</a></li>
<li><a href="#content-3-3">コンテンツ3-3</a></li>
</ul>
<div id='content-3-1'>
<p>テキスト3-1</p>
</div>
<div id='content-3-2'>
<p>テキスト3-2</p>
</div>
<div id='content-3-3'>
<p>テキスト3-3</p>
</div>
</div>
</div>
------続く-----
No.1
- 回答日時:
>直接、scriptの改造の仕方か
私は改造するのはお勧めできません。逆に改造なんて発想自体が、あなたのような事を生んでしまうのでしょう。あなたのやりたいことは、2つの技術でできてしまうんですよ。つまり最小、2行でできてしまうのですよ。
後はクロスブラウザテクニックだけです。
人にコード提供してもらう前に、CSSを勉強してください。この程度なら、3日もあれば習得できるはずですが???
クロスブラウザもサンプルがすでに公開されているので、CSSを勉強していれば、1時間もあれば、動作や改造ができる程度の物です。
回答者はあなたの講師ではありません。動作しない部分だけを聞いてください。
この回答への補足
2行ですか。
凄いですね。
公開されているってことは
ライブラリでしょうか?
改造しなくてもよいものがあるのでしたら、ぜひお教えいただけないでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- JavaScript スマホ上で、左右スワイプで次のページに移動させたいです 2 2022/11/11 17:04
- オープンソース IT用語、ソースとオブジェクト、改変と翻訳と翻案の違いなど どのようにりかいすればよいのですか 1 2022/09/09 10:02
- Windows 10 複数開いているedgeページやEXCELから、特定のページをピンポイントで開くには 3 2022/11/10 00:48
- HTML・CSS 画像が分割されて切り替わる、ループアニメーションが作りたい 7 2023/05/27 17:12
- PDF こんなPDF作れますか? 6 2022/05/13 11:14
- その他(パソコン・スマホ・電化製品) プレイステーションソフト等で使用されていた厚型CDケースを探しているます。 1 2023/03/13 13:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスに入っている...
-
<li></li>の数を制限
-
クリックした<a>タグのみにClas...
-
jQueryでネスト構造の<li>がク...
-
【javascript で動的に a タグ...
-
onmouseoverの表示切り替えが上...
-
SleniumBasicでコンパイルエラ...
-
embed要素のsrc属性の値を変更...
-
画像をクリックしてその地点の...
-
removeEventListenerについて
-
オンマウスオーバーで画像を表示
-
MAX関数を使ってからLEFT JOIN...
-
テキストエリア内の一部の文字...
-
【コーディング】途中から位置...
-
iframe内のリンク文字のマウス...
-
divのheight指定で画面一杯に表...
-
VC++2005で画面上にGIF画像(透...
-
Colorboxがうまく設置できません
-
スクロール可能なチェックボックス
-
【CSS】floatで左右に並べた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
クリックした<a>タグのみにClas...
-
JQueryタブのアクティブ アン...
-
javascriptでEnterキーをtabキ...
-
「jQuery」アコーディオンメニ...
-
【jQuery】遅延実行(タイムラ...
-
ネストされたチェックボックス...
-
【javascript で動的に a タグ...
-
jquery ドロップダウンメニュー...
-
文字と数字が混在する要素のsor...
-
Jquery の slide.toggle で要素...
-
【jQuery】hoverしたn秒後にイ...
-
チェックボックスに入っている...
-
クリックで表示、非表示するメ...
-
同一ページ内で、任意の文字列...
-
オンマウスで画像ロールオーバ...
-
javascriptで、クリックしたら...
-
PHPでログインフォーム
-
<li>タグの順番を入れ替える方法
-
jQuery タブメニューへのダイ...
おすすめ情報