プロが教える店舗&オフィスのセキュリティ対策術

ブラウザの横幅によってcntの値を変えております。
var $win = $(window);
$win.on('load resize', function() {
var windowWidth = window.innerWidth;
if (windowWidth > 767) {
var cnt = 5;// 処理数
return cnt;
}
else {
var cnt = 2;// 処理数
return cnt;
}
});

このcntの値を別のfunctionに渡したいのです。
以下サイトを参考にあれこれやってみましたが、どうしても渡せませんでした。
https://oshiete.goo.ne.jp/qa/3437308.html

どうかご教示いただけないでしょうか?

質問者からの補足コメント

  • うーん・・・

    言葉足らずで申し訳ありません。
    PhotoGALLERYの写真表示数をブラウザの幅で変えたかったのです。
    jQuery(function($){
    var item = $('#js-listItem').children('li');
    var btn = $('#js-listItem-more');
    var className = "is-hidden";
    var itemsList = function () {
    var items = $(item).filter(':visible').length;
    if (items > cnt) {
    $(btn).show();
    } else {
    $(btn).hide();
    }
    中略
    }

    itemsList();
    中略
    });
    文字制限で一部省略させていただきました。
    宜しくお願いいたします。

      補足日時:2020/03/17 15:38

A 回答 (2件)

こんにちは



>このcntの値を別のfunctionに渡したいのです。
直接的に渡したいのなら、その「対象function」へ引数として渡せば良いでしょう。
 対象function(cnt);

その「対象function」との関係かがわかりませんが、そもそもご提示の関数は、イベントリスナとして定義されているので、「渡す」と言われてもどうなさりたいのかよくわかりません。
他の関数から変数の値参照したいという意味であれば(多分こういう意味かと想像しますが)、変数を共通のスコープ内においておけば解決すると思います。
一番簡単なのは「グローバル変数」に値を保存しておくことでしょう。

最初に
 var cnt;
としておいて、イベント処理内では
 if (windowWidth > 767) cnt = 5; else cnt = 2;
で充分で、「return cnt;」は意味不明です。
上記は
 cnt = (windowWidth > 767)? 5:2;
ともかけるので、結局のところ・・・

var cnt;
$(window).on('load resize', function() {
cnt = (window.innerWidth>767)? 5:2;
});
としておいて、「他のfunction」からは、グローバルな変数のcntを参照すれよいのではないでしょうか?

と言っても、「他のfunction」がいつ実行されるのかによっては、質問者様の意図とは違う結果になる可能性がありそうな気がします。(全体が不明なのでわかりませんが、十分ありそうな処理のタイミングのお話です)
    • good
    • 0
この回答へのお礼

ありがとうございました。
いろいろ調べて以下のようにしました。
var cnt;
(function() {
function cnt() {
cnt_set = (window.innerWidth > 767)? 15:6;
$('span#cnt_moto').text(cnt_set);
return cnt_set;
}
window.cntLib= window.cntLib|| {};
window.cntLib.cnt = cnt;
})();

以下が変数を渡したいfunction
jQuery(function($){
var cnt = window.cntLib.cnt();//ここで渡すことができました。
・・・

とても参考になりました。

お礼日時:2020/03/17 18:41

何の言語か知らないけどこれPHP?


PHPも知らないので合ってるかどうかわからないけど

var cntはif文内のローカル変数なので外にある変数には渡せないと思います
ローカルに有るcntを外にある変数に渡す場合は
if文の外にcntを宣言する必要があります
    • good
    • 0
この回答へのお礼

ありがとうございました。
>ローカルに有るcntを外にある変数に渡す場合は
>if文の外にcntを宣言する必要があります
これはわかりませんでしたので、とても勉強になりました。

お礼日時:2020/03/17 18:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!