Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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 jQuery中的可选getElementById()_Javascript_Jquery_Drupal - Fatal编程技术网

Javascript jQuery中的可选getElementById()

Javascript jQuery中的可选getElementById(),javascript,jquery,drupal,Javascript,Jquery,Drupal,我正在使用Drupal,我已经创建了三个浮动横幅 在frontpage上有一个块(block1),显示一个浮动横幅,刷新后第二个横幅出现,第三个也出现。 就像以前写的一样,这些横幅上有一个小小的X按钮来阻止溢出。 我把这个脚本放在一个横幅上,效果很好 <script language="javascript"> function doexpand() { document.getElementById("block1").style.overflow = "visible";

我正在使用Drupal,我已经创建了三个浮动横幅

在frontpage上有一个块(block1),显示一个浮动横幅,刷新后第二个横幅出现,第三个也出现。 就像以前写的一样,这些横幅上有一个小小的X按钮来阻止溢出。 我把这个脚本放在一个横幅上,效果很好

<script language="javascript">
function doexpand() {
    document.getElementById("block1").style.overflow = "visible";
}

function dolittle() {
    document.getElementById("block1").style.overflow = "hidden";
}    
</script>
它不起作用了。 firebug/控制台显示:ReferenceError:doexpand未定义

我也尝试过使用jQuery的单个块,如下所示:

(function ($) {

    function doexpand() {
     $("#block1,#block2").css("overflow","visible");
    }
    function dolittle() {
     $("#block1,#block2").css("overflow","hidden");
    }

    })(jQuery);
(function ($) {

        function doexpand() {
         $("#block1").css("overflow","visible");
        }
        function dolittle() {
         $("#block1").css("overflow","hidden");
        }

        })(jQuery);
(function ($) {
        //your existing code
    })(jQuery);
它显示了同样的错误

注意:Drupal有不同的包装,如下所示:

(function ($) {

    function doexpand() {
     $("#block1,#block2").css("overflow","visible");
    }
    function dolittle() {
     $("#block1,#block2").css("overflow","hidden");
    }

    })(jQuery);
(function ($) {

        function doexpand() {
         $("#block1").css("overflow","visible");
        }
        function dolittle() {
         $("#block1").css("overflow","hidden");
        }

        })(jQuery);
(function ($) {
        //your existing code
    })(jQuery);

只需将函数定义为全局函数,或者需要将其公开为全局函数

(function ($, window) {

        function doexpand() {
         $("#block1").css("overflow","visible");
        }
        function dolittle() {
         $("#block1").css("overflow","hidden");
        }

        // expose them global
        window.doexpand = doexpand;
        window.dolittle = dolittle;

})(jQuery, window);

只需将函数定义为全局函数,或者需要将其公开为全局函数

(function ($, window) {

        function doexpand() {
         $("#block1").css("overflow","visible");
        }
        function dolittle() {
         $("#block1").css("overflow","hidden");
        }

        // expose them global
        window.doexpand = doexpand;
        window.dolittle = dolittle;

})(jQuery, window);

您的代码位于闭包内部,因此这些函数在闭包外部不可用。用jQuery添加您的事件。您的上一个问题被误解了,但与此问题大不相同。你应该挽救另一个。这是一个真正的混乱,这就是为什么我打开了一个新的,我投票赞成删除其他线程。主要的问题是,你试图改变它,以一个非常不同的问题后,你的第一个问题被回答。不要这样做。在问问题之前先找出你的问题所在,我很抱歉。我会记住这一点。你的代码在闭包中,所以那些函数在闭包外是不可用的。用jQuery添加您的事件。您的上一个问题被误解了,但与此问题大不相同。你应该挽救另一个。这是一个真正的混乱,这就是为什么我打开了一个新的,我投票赞成删除其他线程。主要的问题是,你试图改变它,以一个非常不同的问题后,你的第一个问题被回答。不要这样做。在问问题之前先找出你的问题所在,我很抱歉。我会记住这一点。把东西全球化难道不是一种糟糕的做法吗?返回这些值并在窗口上下文中使用不是更好吗?伙计,只需在横幅中添加操作侦听器-停止用函数、变量、js调用和其他东西污染您的全局命名空间和宝贵的html。让东西全局化不是一种坏做法吗?返回这些值并在窗口上下文中使用它们不是更好吗?伙计,只需在横幅中添加操作侦听器-停止用函数、变量、js调用等污染您的全局命名空间和宝贵的html。