質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

jQuery

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

Q&A

解決済

2回答

993閲覧

JSのグローバル関数が変更できなない

Chandler_Bing

総合スコア673

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

jQuery

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

1グッド

0クリップ

投稿2019/02/20 12:11

getMaxpageでAjaxでPHPファイルに飛び配列数を取得し、それを特定お数字で割ったものをグローバル変数に代入します。

maxpage = Math.ceil(res.maxpage / limitation); console.log(maxpage);

と代入しているつもりなのですが何が問題でしょうか。スコープの問題なのはわかりますがグローバル変数はどこからでも変更できるのではないのでしょうか。それとも.doneの後の処理は無名関数内であることが問題でしょうか。

参考サイト
https://qiita.com/matsuby/items/1010ae38ee6258fd8020

JS

1$(function() { 2 3 var btndisplay = 5; 4 var limitation = 5; 5 var cpage = 1; 6 var maxpage = 100; 7 var last = null; 8 var first = null; 9 var next = null; 10 var prev = null; 11 12 function reviewClone() { 13 var review = $("<div>", { 14 "class": "review" 15 }); 16 var name = $("<p>", { 17 "class": "name" 18 }); 19 var country = $("<p>", { 20 "class": "country" 21 }); 22 var date = $("<p>", { 23 "class": "date" 24 }); 25 var text = $("<span>", { 26 "class": "text" 27 }); 28 review.append(name, country, date, text); 29 return review; 30 }; 31 32 function getMaxpage() { 33 $.post('reviewsAjax.php', { 34 function: 'getMaxpage' 35 }).done(function(res) { 36 maxpage = Math.ceil(res.maxpage / limitation); 37 console.log(maxpage); 38 }) 39 .fail(function(XMLHttpRequest, textStatus, errorThrown) { 40 console.log(textStatus); 41 }); 42 }; 43 getMaxpage();//26が表示される 44 console.log(maxpage);//100が表示される 45 46}); 47
bochan2👍を押しています

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

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

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

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

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

m.ts10806

2019/02/20 12:24 編集

>スコープの問題なのはわかりますが わかってないからいつも「何が問題でしょうか」って聞いてるんでしょ。 $(function() { の中にある時点で正確な意味でグローバルではない。 それに何度も注意してんじゃん。あなたのは質問じゃなくてデバッグ依頼だって。 非同期実行は何かって100回確認して出直してください。
guest

回答2

0

mts10806さんが指摘されているように「非同期」というところがポイントですね。
仮に、getMaxpage()の中で非同期通信を使わなければどうなるか試してみればわかるんじゃないでしょうか。

投稿2019/02/20 12:38

cerfweb

総合スコア1899

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

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

Chandler_Bing

2019/02/20 12:56

非同期なので、終了する前にconsole.log(maxpage);が呼ばれているのだと思いますが、それを防ぐための doneではないのでしょうか。
m.ts10806

2019/02/20 12:58

参考記事のシリーズに非同期についてしっかり書いてるからそこ読めばいいのにとは思いました。
cerfweb

2019/02/20 13:02

ほんとだ、非同期関数のところよく読めば何が起きているのかわかりますよね。
退会済みユーザー

退会済みユーザー

2019/02/20 14:32

なにも return してないやつでエラーを起こして 100の処理に行かないようにしたのがBA・・・
guest

0

自己解決

getMaxpage().done(function(res) { maxpage = Math.ceil(res.maxpage / limitation); console.log(maxpage); });

これで解決しました

投稿2019/02/20 13:13

Chandler_Bing

総合スコア673

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

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

m.ts10806

2019/02/20 19:55

新たな問題を起こしてどうする
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問