0

php スクリプトの一部で実行する必要があるのは、いくつかの js だけです。テスト目的で、php をコメントアウトしたので、ここでは表示しません。

<!DOCTYPE HTML>
<html>
<head>
    <script src="jquery-1.9.1.min.js" type="text/javascript"></script>
</head>
<body>
    <?php
        echo '<script>
        var width = $(window).width();<---Not working down too 1A
        var height = $(window).height();
        var widthSTR = width.toString();
        widthSTR = widthSTR.concat("px");
        var heightSTR = height.toString();
        heightSTR = heightSTR.concat("px");
        heightSTR = " ".concat(heightSTR);
        var size = widthSTR.concat(heightSTR);
        $("body").css({
            "background-size" : size, <---1A and above ^
            "background" : "url(p.jpg) 50% 0 no-repeat fixed"<---1B
        });
        </script>
        ';
    ?>
</body>
</html>

1B とラベル付けした行は正常に機能し、背景画像が表示されます。動作していないというラベルの付いたセクションは効果がないようですが、php の外側の Script タグで個別に実行すると正常に動作します。見逃した理由/大きな間違いはありますか?前もって感謝します。

4

4 に答える 4

2

コードを次のようにラップします。

jQuery(function($) {
  // Put your whole code here
});

DOM に触れている場合は、そのブロック内に jQuery のものをラップする必要があります。これは呼び出されます: Document Loading.ready()イベント。

于 2013-07-08T15:54:19.717 に答える
2

ロードされるオブジェクト、幅などに依存する場合は、完全な dom がロードされたらコードを実行する必要があります。

<!DOCTYPE HTML>
<html>
<head>
    <script src="jquery-1.9.1.min.js" type="text/javascript"></script>
</head>
<body>
    <?php
        echo '<script>
        $(document).ready(function(){
            var width = $(window).width();<---Not working down too 1A
            var height = $(window).height();
            var widthSTR = width.toString();
            widthSTR = widthSTR.concat("px");
            var heightSTR = height.toString();
            heightSTR = heightSTR.concat("px");
            heightSTR = " ".concat(heightSTR);
            var size = widthSTR.concat(heightSTR);
            $("body").css({
                "background-size" : size, <---1A and above ^
                "background" : "url(p.jpg) 50% 0 no-repeat fixed"<---1B
            });
        });
        </script>
        ';
    ?>
</body>
</html>

とにかく文字列をエコーアウトする必要がある理由はありませんが?HTML 内に実際の Javascript を直接含めてエコーを使用しないのはなぜですか?


Javascript のみを使用すると、特にエディターで読みやすくなります。

<body>
    <script>
        $(document).ready(function(){
            var width = $(window).width();
            var height = $(window).height();
            var widthSTR = width.toString();
            widthSTR = widthSTR.concat("px");
            var heightSTR = height.toString();
            heightSTR = heightSTR.concat("px");
            heightSTR = " ".concat(heightSTR);
            var size = widthSTR.concat(heightSTR);

            $("body").css({
                "background-size" : size, 
                "background" : "url(p.jpg) 50% 0 no-repeat fixed",
            });
        });
    </script>
</body>
于 2013-07-08T16:05:08.057 に答える
0

やってみました:

if($condition){
?>
 <script>
        var width = $(window).width();
        var height = $(window).height();
        var widthSTR = width.toString();
        widthSTR = widthSTR.concat("px");
        var heightSTR = height.toString();
        heightSTR = heightSTR.concat("px");
        heightSTR = " ".concat(heightSTR);
        var size = widthSTR.concat(heightSTR);
        $("body").css({
            "background-size" : size,
            "background" : "url(p.jpg) 50% 0 no-repeat fixed"
        });
        </script>

    ?>
<?php
}

おそらく問題は、DOM がロードされるのを待っていないことです。試してみてください:

if($condition){
    ?>
     <script>
      $(function(){
            var width = $(window).width();
            var height = $(window).height();
            var widthSTR = width.toString();
            widthSTR = widthSTR.concat("px");
            var heightSTR = height.toString();
            heightSTR = heightSTR.concat("px");
            heightSTR = " ".concat(heightSTR);
            var size = widthSTR.concat(heightSTR);
            $("body").css({
                "background-size" : size, 
                "background" : "url(p.jpg) 50% 0 no-repeat fixed"
            });
    });
            </script>

        ?>
    <?php
    }

ただし、これはphpとは何の関係もないことに注意してください。

于 2013-07-08T15:53:35.867 に答える