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

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

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

2回答

618閲覧

jQueryのtextで出力した数字を別ページで読み込めない

erp

総合スコア46

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2021/01/13 01:21

編集2021/01/13 02:33

前提・実現したいこと

記事のコメント数を書き出し、その数字を別ページの記事一覧に載せようとしています。別ページのアイコンを載せることが出来たのですが、数字は出力できずに困っています。どうすればいいでしょうか。

該当のソースコード

js

1if ($('#show_comments').length) { 2 var come = $('.comments').find('li').length; 3 $('.cap--info .icon-come').text(come); 4 } 5 6 if($('.article').length) { 7 $(this).each(function(){ 8 var asa = $(this).find('.snip').attr('href'); 9 var ab = $(this).find('.a-bubble'); 10 $.ajax({ 11 url: asa, // 表示させたいコンテンツがあるページURL 12 cache: false, 13 datatype: 'html', 14 success: function(html) { 15 var h = $(html).find('.icon-come'); // 表示させたいコンテンツの要素を指定 16 ab.append(h); // append関数で指定先の要素へ出力 17 } 18 }); 19 }) 20 }

CSS

1:root { 2 --i-lnr: Linearicons-Free; 3} 4.icon-font, 5.icon-lni, 6.icon-lnr { 7 position: relative; 8 display: inline; 9 margin: 0 .3rem 0 1.75rem; 10} 11.icon-lnr::before { 12 font-family: var(--i-lnr); 13 font-style: normal; 14 font-weight: 500; 15 font-variant: normal; 16 text-transform: none; 17 line-height: inherit; 18 -webkit-font-smoothing: antialiased; 19 -moz-osx-font-smoothing: grayscale; 20} 21.icon-come::before { 22 content: '\e83f' 23}

記事一覧のHTMLです。

html

1<link rel="stylesheet" href="https://cdn.linearicons.com/free/1.0.0/icon-font.min.css" media="print" onload="this.media=\'all\'"> 2 3<div class="flex blog"> 4 <div class="article border-3 col-s-100 col-m-30 bxs-1"> 5 <div class="a-name"> 6 <a class="snip" href="example-2.html">Notice</a> 7 <time datetime="2020-11-24">2020/11/24</time> 8 <span class="a-bubble"></span> 9 </div> 10 </div> 11 <div class="article border-3 col-s-100 col-m-30 bxs-1"> 12 <div class="a-name"> 13 <a class="snip" href="example-1.html">Notice</a> 14 <time datetime="2020-11-24">2020/11/24</time> 15 <span class="a-bubble"></span> 16 </div> 17 </div> 18</div>

記事(example-1.html)のHTMLです。

html

1<link rel="stylesheet" href="https://cdn.linearicons.com/free/1.0.0/icon-font.min.css" media="print" onload="this.media=\'all\'"> 2 3<!-- コメント数 --> 4<div class="align-left"> 5 <div class="cap--info"> 6 <p><a class="none blue-gray" href="#show_comments"><span class="icon-lnr icon-come"></span></a></p> 7 </div> 8</div> 9 10<!-- コメント --> 11<div id="show_comments"> 12 <div class="comments"> 13 <ul class="scroll-content mCustomScrollbar" data-mcs-theme="minimal-dark"> 14 <li> 15 <div> 16 <span>NAME</span> 17 <span>(ID:xxxx)</span> 18 <span>date:xxx</span> 19 </div> 20 <p> 21 message 22 </p> 23 </li> 24 <li> 25 <div> 26 <span>NAME</span> 27 <span>(ID:xxxx)</span> 28 <span>date:xxx</span> 29 </div> 30 <p> 31 message 32 </p> 33 </li> 34 </ul> 35 </div> 36</div>

試したこと

jQueryのtextで出力した数は別ページに表示させることができないのでしょうか。困っています。ご助力いただけますと助かります。

補足情報(FW/ツールのバージョンなど)

Chrome最新版、Safari 604.1

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

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

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

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

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

yambejp

2021/01/13 01:37

> jQueryのtextで出力した数 ではない、スタティックな数値なら目処がたっているのでしょうか?
int32_t

2021/01/13 02:06

JavaScriptコードはどちらのページで動かすものですか? #show_comments は記事ページにしかないし、.article は一覧ページにしかありません。
erp

2021/01/13 02:31

javascriptは共通で読み込むものです。 アイコンは表示されますが、数字だけ表示できせん。
guest

回答2

0

ベストアンサー

<iframe>などで同一ページ上に複数のドキュメントが存在する場合以外、あるドキュメントのスクリプトが別のドキュメントを変更することはできません。

現在の構成を尊重して目的を達成するなら、$.ajax()successハンドラ内で入手した記事のHTML内のコメントを数えて、結果を記事一覧のページに挿入すればよいです。ただし、表示されるまで遅くなるし通信量が増えるので、こういった情報はサーバサイドで生成するのが真っ当です。

投稿2021/01/13 02:45

int32_t

総合スコア21679

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

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

erp

2021/01/13 04:51

succes内で数えて...というので一応できました。しかし表示速度が遅くなるのですね....。 「サーバーサイドで」のやり方はどう調べればいいでしょうか。
int32_t

2021/01/13 05:23

あなたのシステム全体がどう構築されているかわからないとアドバイスはしにくいです。別の質問を立てるがいいかもしれないですね。
erp

2021/01/13 15:01

そうなのですね。勉強になりました。回答ありがとうございます。
guest

0

※質問が修正される前の回答です。

if(('.article').length) {

これ('.article').だと何にもとってきません。
jQueryのセレクタの形の基本($(セレクタ)) を守ってください(これに限らず)

投稿2021/01/13 01:37

編集2021/01/13 02:35
m.ts10806

総合スコア80875

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

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

erp

2021/01/13 02:30

$のコピぺミスです。正しい形にしましたが解決しません。
m.ts10806

2021/01/13 02:31

質問内容調整してください。 気づいてるかどうか分かりませんが、質問本文の「HTNL」など誤記が散見されます。 書いたとおりにしか動かないプログラムにとって致命的です。
erp

2021/01/13 02:33

すみません。直しているところです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問