-1

更新: 私のスレッドが多くのユーザーに誤解されて申し訳ありません。もっと明確にしようと思います。私は Drupal を使用しており、3 つのフローティング バナーを作成しました。フロントページには、1 つのフローティング バナーを表示するブロック (block1) があり、更新後に 2 番目のバナーが表示され、3 番目のバナーも表示されます。前に書いたように、これらのバナーにはオーバーフローを止めるための小さな X ボタンがあります。このスクリプトをバナーの 1 つに配置しましたが、うまく機能しています。

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

function dolittle() {
    document.getElementById("block1").style.overflow = "hidden";
}    
</script>

本当の問題は、カテゴリ ページに #block2 があり、記事に #block3 があることです。これらのブロックは同じバナーを表示しています。コード オーバーは 1 つの ID に対してのみ機能します。この場合、#block1. document.getElementById は、他のトピックから読んだように、より多くの ID に対して機能しません。

次のような 2 つのブロック ID を使用して jQuery を試しました。

(function ($) {

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

    })(jQuery);

動いていない。firebug/コンソールの表示: ReferenceError: doexpand が定義されていません。

次のようなjQueryでも単一のブロックで試しました:

(function ($) {

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

        })(jQuery);

同じエラーが表示されます。

注: Drupal には別のラッピングがあり、次のようになります。

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

7 に答える 7

0

上記のコードは、jQuery (JavaScript ライブラリ) で完全に有効です。

より典型的なjQueryコードを使用したい場合は、次のことができます

$('#block1').css('overflow', 'visible');

次のように複数の ID に拡張できます。

$('#block1, #block2').css('overflow', 'visible');

jQuery オブジェクトから DOM オブジェクトをいつでも取得できます。

$('#block1').get(0).style.overflow="visible";

(この特定の例はスマートではありません。複雑なセレクターまたは jQuery 関数を使用しない場合は、jQuery を使用する必要はありません)

于 2013-06-25T07:36:23.923 に答える