gpt4 book ai didi

javascript - 如何返回文件准备好的功能?

转载 作者:行者123 更新时间:2023-11-28 00:13:36 25 4
gpt4 key购买 nike

我不知道是否可以这样做,比如我有 2 个 js 文件。第一个 Js 文件:

var news_pos, about_pos, services_pos, clients_pos;

function define_pos() {

var $top_slides=$('#top_slides'),
$mid_nav=$('#mid_nav'),
$news_section=$('#section-1');

var fixed_height = $top_slides.height() + $mid_nav.height();

news_pos = fixed_height - 20;
about_pos = fixed_height + $news_section.height();
services_pos = fixed_height + $news_section.height() * 2;
clients_pos = fixed_height + $news_section.height() * 3;
}

$(document).ready(function() {

var section_news = $('#section-1'),
section_about = $('#section-2'),
section_services = $('#section-3'),
section_clients = $('#section-4');

setheight();

function setheight() {
var section_height = $(window).height() + 200;
$section_news.height(section_height);
$section_about.height(section_height);
$section_services.height(section_height);
$section_clients.height(section_height);
define_pos();
}
});
  1. 第二个 JS 文件:

    $(文档).ready(函数() {

    var nav = {

    '$btn1': $('#btn1'),
    '$btn2': $('#btn2'),
    '$btn3': $('#btn3'),
    '$btn4': $('#btn4'),
    '$btn5': $('#btn5'),

    myclick : function() {

    myclicked(nav.$btn1, 0);
    myclicked(nav.$btn2, news_pos);
    myclicked(nav.$btn3, about_pos);
    myclicked(nav.$btn4, services_pos);
    myclicked(nav.$btn5, clients_pos);

    function myclicked(j,k) {
    j.click(function(e) {
    e.preventDefault();
    $('html,body').animate({scrollTop: k}, 1000);
    });
    }
    // Is it right to do return{'myclick':myclick},
    // how to call? seems not logical
    }
    };

    // Here will not work because it say news_pos is undefined.
    // If I use setTimeout(nav.myclick,1000), it will works but
    // I want to run it right the when position is caculated.
    nav.myclick();

    });

如何将 nav.myclick() 函数传递给第一个 js 文件并将其放在 setheight() 和 define_pos() 下?顺便说一句,直接在 stackoverflow 中编写代码很奇怪,按 Tab 键实际上不会给你任何间距。

最佳答案

现在,function setheight(){ } 是第一个 $(document).ready(function(){} 中的一个内部函数。它的“作用域” (可见性)仅限于该函数内部。

要使其对所有人可见,您需要将其移到 $(document).ready(function(){} 之外。

然后,在第二个文件之前声明第一个文件,第二个文件中的函数现在可以使用setheight()


要使用 myClick:

您的函数现在是 myclicked(),因此您需要将其更改为 myclick()。然后,您可以在全局范围内调用函数:

function myclick(j,k){            
j.click(function(e) {
e.preventDefault();
$('html,body').animate({scrollTop: k}, 1000);
setheight();
define_pos();
}

关于javascript - 如何返回文件准备好的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com