🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

496閲覧

Array[0]から始まる配列をArray[1]から取得したい

tk-tail

総合スコア1

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/01/30 11:09

201.html~223.htmlまでの外部htmlを、読み込んで、link_list のリストを、クリックするとポップアップするようにしたいのですが、下記のソースだと、配列の値が200.htmlから始まってしまうので、「クリック1」からは表示できるのですが、「クリック0」は200.htmlがないので表示出来ません…。。。。

「クリック0」は不要で「クリック1」~「クリック23」をクリックすると、それぞれ「201.html」~「223.html」が表示されるようにしたいのですが…。。。

201.htmlから始まるようにするには、どのように変更すればよろしいでしょうか。
基本的なことですみませんが、調べてもわからないので…よろしくお願いします。

html------------------------------------------------------
<body>
<div class="container">
<ul class="link_list">
<li>クリック0</li>
<li>クリック1</li>
<li>クリック2</li>
<li>クリック3</li>
</ul>
<div class="box">
<div class="box_inner">
<ul class="box_load">
</ul>
<div class="close">
閉じる
</div>
<ul class="arrows">
<li class="arrow_left"><span class="arrow_span"></span></li>
<li class="arrow_rigth"><span class="arrow_span"></span></li>
</ul>
</div>
</div>
<div class="box_cover">
</div>
</div>

jquery----------------------------------------------------------
$(function(){
var box =$('.box'),
link = $('.link_list li '),
box_cover = $('.box_cover'),
close=$('.close'),
box_load = $('.box_load'),
box_load_li = $('.box_load>li'),
arrow_left =$('.arrow_left>.arrow_span'),
arrow_rigth =$('.arrow_rigth>.arrow_span');

var all_link=new Array(), links = $('.link_list').find('li'), dr='<?php echo get_template_directory_uri(); ?>'; for(var i=0;i<links.length;i++){ all_link[i]='20'+i+'.html'; box_load.append('<li class="load_'+i+'"></li>'); $('.load_'+i).load(all_link[i]); } $('.box_load>li').hide(); link.on('click',function(){ var li_index =link.index(this); $('.box_load>li').removeClass('active'); $('.load_'+li_index).addClass('active'); $('.box_load>li').hide(); $('.box_load >li.active').show(); if(box.hasClass('active')){ box.removeClass('active'); box_cover.removeClass('active'); close.removeClass('active'); $('.box_load>li').removeClass('active'); }else{ // もしないなら box.addClass('active'); box_cover.addClass('active'); close.addClass('active'); } }); box_cover.on('click',function(){ box.removeClass('active'); box_cover.removeClass('active'); close.removeClass('active'); $('.box_load>li').removeClass('active'); }); close.on('click',function(){ box.removeClass('active'); box_cover.removeClass('active'); close.removeClass('active'); $('.box_load>li').removeClass('active'); }); var fade_speed = 300; arrow_rigth.on('click',function(){ var load_active = $('.box_load >li.active'), right = load_active.next('li').length?load_active.next('li'):$('.box_load >li:first'); $('.box_load >li.active').fadeOut(fade_speed).removeClass('active'); right.fadeIn(fade_speed).addClass('active'); }); arrow_left.on('click',function(){ var load_active = $('.box_load >li.active'), left = load_active.prev('li').length?load_active.prev('li'):$('.box_load >li:last'); $('.box_load >li.active').fadeOut(fade_speed).removeClass('active'); left.fadeIn(fade_speed).addClass('active'); }); }); </script>
</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

seastar3

2021/01/30 13:43

htmlコードとjqueryコードの部分を、それぞれ``` ```と囲んで、マークアップ記法で読みやすくしましょう。
guest

回答1

0

ベストアンサー

まずは、1点確認です。

ul class="link_list"> <li>クリック0</li> <li>クリック1</li> <li>クリック2</li> <li>クリック3</li> </ul>

の部分は、実際は、0~23まである認識で良いですかね?

その前提で、意見させていただきますね

①html内のlink_listをクリック1~23にする。
②jQuery内でhtmlリンク作成部分で、i+201のhtmlを指定する
※そもそも'20'+iでやっちゃったら、201~2023ですよね?誤りと考え、修正してます。

for(var i=0;i<links.length;i++){ all_link[i]=(i+201)+'.html'; box_load.append('<li class="load_'+i+'"></li>'); $('.load_'+i).load(all_link[i]); }

【概要解説】
■①の対応
表示するクリックのリストを1~23にします。
これで0が表示されなくなるはずです。

■②の対応
link_listが、①の対応にてクリック1~23になったことにより
配列[0]にクリック1が入っています。
そのため配列アクセスにiを用い、
html名称作成にはi+201を用いることで、
配列[0]にはクリック1と201.htmlの紐付けを
配列[1]にはクリック2と202.htmlの紐付けを
...
という形で、リンク作成をおこないます。

投稿2021/01/30 14:02

WhiteTempest

総合スコア404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tk-tail

2021/01/31 00:26

出来ました!ありがとうございます。 解説よく読んでみましたが、まだいまいち理解出来ていませんが、プログラムよく見てみます。 あと、リストが23まである部分、説明不足ですみませんでした。うまく書けなくてわかり難いところもあったかと思いますが、丁寧に回答して頂き感謝いたします。
WhiteTempest

2021/01/31 01:10

解決されたようで、良かったです。 初心者の方にありがちなのですが、 コメント(日本語説明)が少ないので、 1行ずつコメントを書くともう少しプログラムが理解しやいですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問