手動で画像を順番に表示させる、スライドショーのような表現を作ろうとしています。
色々なサイトを参考に見よう見まねで作成してみたのですが、
途中でうまくいかずに行き詰っております(´・ω・`)
[XHTML]
<body onload="seltab(0)">
<!-- 順番に表示させる内容 -->
<div id="slide" name="slide"><p>1</p></div>
<div id="slide" name="slide"><p>2</p></div>
<div id="slide" name="slide"><p>3</p></div>
<div id="slide" name="slide"><p>4</p></div>
<div id="slide" name="slide"><p>5</p></div>
<!-- ページ切り替え操作部分 -->
<a href="javascript:seltab(-10000)">first</a>
<a href="javascript:seltab(-1)">back</a>
<a href="javascript:seltab(1)">next</a>
<a href="javascript:seltab(10000)">last</a>
[Javascript]
var selected = 0;
function seltab(move) {
o = document.getElementsByName("slide");
selected = selected + move;
if (selected < 0) {selected = 0}
if (selected >= o.length) {selected = o.length - 1}
for (i = 0; i < o.length; i++) {
if (i == selected) {
o[i].style.display = "block";
} else {
o[i].style.display = "none";
}
}
}
このやり方で一応動作はしています(WIN IE + WIN Firefox にて確認)
が、id が同じページ内で重複している点と、div に name を付ける点で、構文チェックに引っ掛かってしまう為、できればそれを回避したいなと思っています。
同じ動作が作れれば、Javascript の処理方法に特に拘りはありません。
お分かりになる方がいらっしゃれば、ぜひぜひご指導お願いします。
No.1
- 回答日時:
別に構文チェックにそこまでこだわる必要もないと思いますが、
<html>
<head>
<script type="text/javascript">
<!--
var e=null;
function seltab(move) {
var te=null;
switch(move){
case 0:for(var i=0;i<document.getElementById("orz").childNodes.length;++i)
document.getElementById("orz").childNodes[i].style.display="none";
case -2:te=document.getElementById("orz").childNodes[0];break;
case -1:te=e?e.previousSibling:null;break;
case 1:te=e?e.nextSibling:null;break;
case 2:te=document.getElementById("orz").childNodes[document.getElementById("orz").childNodes.length-1];break;
default:break;
}
if(e && te)e.style.display="none";if(te){te.style.display="block";e=te;}
}
-->
</script>
</head>
<body onload="seltab(0)">
<!-- 順番に表示させる内容 -->
<div id="orz">
<div><p>1</p></div>
<div><p>2</p></div>
<div><p>3</p></div>
<div><p>4</p></div>
<div><p>5</p></div>
</div>
<!-- ページ切り替え操作部分 -->
<a href="javascript:seltab(-2)">first</a>
<a href="javascript:seltab(-1)">back</a>
<a href="javascript:seltab(1)">next</a>
<a href="javascript:seltab(2)">last</a>
</body>
</html>
みたいな。
ご回答ありがとうございます!
早速試してみたところ、IE では希望通りの動作を確認できました!
HTMLソースも無駄なIDなどが省けてとても嬉しいです。
ただ、残念ながら Firefox では全ての内容が表示されたままで、うまく動作してくれませんでした。
頂いたソースを元に、これから解決策を探してみようと思います。
どうもありがとうございました。
No.2ベストアンサー
- 回答日時:
FirefoxはchildNodesにテキストノードが入ってくるの忘れてました。
<html>
<head>
<script type="text/javascript">
<!--
var _i=0,ds=null;
function seltab(move) {
if(!ds){ds=document.getElementById("orz").getElementsByTagName("div");for(var i=1;i<ds.length;++i)ds[i].style.display="none";}
var i=move==-2?0:move==-1?_i-1:move==0?0:move==1?_i+1:move==2?ds.length-1:0;
if(i!=_i && 0<=i && i<ds.length){ds[_i].style.display="none";_i=i;ds[_i].style.display="block";}
}
-->
</script>
</head>
<body onload="seltab(0)">
<!-- 順番に表示させる内容 -->
<div id="orz">
<div><p>1</p></div>
<div><p>2</p></div>
<div><p>3</p></div>
<div><p>4</p></div>
<div><p>5</p></div>
</div>
<!-- ページ切り替え操作部分 -->
<a href="javascript:seltab(-2)">first</a>
<a href="javascript:seltab(-1)">back</a>
<a href="javascript:seltab(1)">next</a>
<a href="javascript:seltab(2)">last</a>
</body>
</html>
でおk
ありがとうございます!!
無事に Firefox でも動作しました!
教えて頂くだけで終わらせずに、教えて頂いたスクリプトの中身について、これからきちんと勉強していこうと思います。
大変貴重な情報をご提供頂き、ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
背景色を一定時間ごとにランダ...
-
javascriptでURLにマウスオーバー
-
[急ぎ] videoタグで埋め込んだm...
-
タブで開いてさらにタブ内をア...
-
javascriptでpostした値が取得...
-
jQueryでシンプルドラッグドロ...
-
プルダウンとチェックボックス...
-
ダブルクォーテーションが消え...
-
<前 次> のようなリンクを見...
-
【jquery】スクロールで背景画...
-
jqueryを使って無駄なspanタグ...
-
displayの状態を取得したい
-
jTweetsAnywhereでハッシュタグ...
-
iframe内のリンクが飛ばないの...
-
取得した要素がインライン要素...
-
htmlの記述で link rel=styles...
-
画像の上に画像リンクを貼る方法
-
スライダーを実装した場合、ペ...
-
文字を固定したいのですが…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
createElementで作成した要素を...
-
removeEventListenerについて
-
IFRAMEの表示/非表示を切り替え...
-
タブで開いてさらにタブ内をア...
-
変数名をどのようにつけるのが...
-
クリックで色変更後に既に変更...
-
表示・非表示のスクリプトで、...
-
HTMLとJavaScriptで作ったタイ...
-
console.log結果をhtmlで表示し...
-
jQueryでクリックされた要素のi...
-
HTMLタグに複数のクラスを設定...
-
指定したパスが現URLに含まれて...
-
iframe内のリンクが飛ばないの...
-
背景色を透明化
-
テキストエリア内の一部の文字...
-
変数内容をHTML内で表示する方法
-
classの中の<a>タグにidを追加
おすすめ情報