Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中声明要在多个文件中使用的变量_Javascript_Var - Fatal编程技术网

在javascript中声明要在多个文件中使用的变量

在javascript中声明要在多个文件中使用的变量,javascript,var,Javascript,Var,我正在编辑一个网站。我有一个主页和一个第二页。在主页中,我希望有两个链接,都链接到同一个第二页。在secundary页面中,我隐藏了一个表单,当单击按钮时会显示该表单。我想在两个链接之间实现的区别是: -当用户单击第一个链接时,第二页会正常显示,表单隐藏(这已经在工作,单击按钮时,表单会显示,使用滑动切换功能)。 -当用户单击第二个链接时,会出现显示表单的第二个页面 我正在尝试使用javascript,尽管我有非常原始的知识,我的想法是在索引(主)页面中创建一个名为initia=0的变量,当用户

我正在编辑一个网站。我有一个主页和一个第二页。在主页中,我希望有两个链接,都链接到同一个第二页。在secundary页面中,我隐藏了一个表单,当单击按钮时会显示该表单。我想在两个链接之间实现的区别是: -当用户单击第一个链接时,第二页会正常显示,表单隐藏(这已经在工作,单击按钮时,表单会显示,使用滑动切换功能)。 -当用户单击第二个链接时,会出现显示表单的第二个页面

我正在尝试使用javascript,尽管我有非常原始的知识,我的想法是在索引(主)页面中创建一个名为initia=0的变量,当用户单击第二个链接时,initia变为1。然后在辅助页面文件中重用该变量,只需检查initia是1还是0。但我认为它不是这样工作的。我该怎么做

我现在的代码虽然不起作用,但是:

    //in the main page
    <script type="text/javascript">
    var inici = 0;
    $(document).ready(function(){ 
     $(".x").click(function()
     {
            inici = 2;
        });});
    </script>

//in the secundary page
    <script type="text/javascript">
        $(document).ready(function(){ 
            $(".msg_body").hide(); 
            $(".msg_head").click(function()
            {
                $(this).next(".msg_body").slideToggle();
            });//until here normal behaviour
            if (inici > 1) { //to check if it should b already opened
                $(".msg_body").show();
                inici = 0;
            }});
        </script>
//在主页中
var-inici=0;
$(文档).ready(函数(){
$(“.x”)。单击(函数()
{
inici=2;
});});
//在第二页
$(文档).ready(函数(){
$(“.msg_body”).hide();
$(“.msg_head”)。单击(函数()
{
$(this).next(“.msg_body”).slideToggle();
})//
如果(inici>1){//检查它是否已经打开
$(“.msg_body”).show();
inici=0;
}});

谢谢

这不可能使用全局变量。您应该尝试使用,它链接到域。

您可以将“表单隐藏”版本的链接如下:

page.html
page.html#form
$(document).ready(function(){ 
    if(document.location.hash !== "#form") {
        $(".msg_body").hide(); 
        $(".msg_head").click(function()
        {
            $(this).next(".msg_body").slideToggle();
        });
    }
 });
表格上显示的是这样的:

page.html
page.html#form
$(document).ready(function(){ 
    if(document.location.hash !== "#form") {
        $(".msg_body").hide(); 
        $(".msg_head").click(function()
        {
            $(this).next(".msg_body").slideToggle();
        });
    }
 });
(两个文件都使用相同的文件;第二个文件末尾有一些额外的内容)

然后让您的JavaScript如下所示:

page.html
page.html#form
$(document).ready(function(){ 
    if(document.location.hash !== "#form") {
        $(".msg_body").hide(); 
        $(".msg_head").click(function()
        {
            $(this).next(".msg_body").slideToggle();
        });
    }
 });
这意味着只有在URL中没有
#form
的情况下访问页面时,表单才会被隐藏。无需使用任何
inici
变量。

这将不起作用(据我所知),因为当第二页上的Javascript开始运行时,主页上的Javascript停止运行。因此,虽然单击链接时inici确实会发生更改,但我相信第二个页面会看到一个新的inici实例,您将其初始化为0


我认为一个更有效的方法是,当你点击相应的链接后转移用户时,只需将一些数据发布到第二页。然后,第二页可以读取POST数据,并决定是否显示表单。

F*完美,我想说。非常感谢:)我的问题已经解决了!!当窗体被显示时,如何自动地(向下)显示页面,以查看窗体在顶部的开始,而不是在屏幕的中间。我认为html中的某些东西只是使用了#,向表单添加
id=“form”
属性应该可以实现这一点。如果它已经有一个ID,您可以在上面的示例中使用该ID,而不是“form”。