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 的行工作正常,显示背景图像。标记为 not working 的部分似乎没有任何效果,但是当我在 php 之外的 Script 标签中单独运行它时,它可以正常工作。知道为什么/我错过了巨大的错误吗?提前致谢。

4

4 回答 4

2

将您的代码包装在里面:

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

如果你正在接触 DOM,你应该将你的 jQuery 东西包裹在那个块中;.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 回答
0

我在要操作的元素中添加了“contenteditable”。例子:

<span class="display" id="echotask" contenteditable>

然后 jquery 函数操纵了我的 php 脚本回显到文档中的 html。我不知道为什么这里有必要这样做,因为 jquery 操作了没有该关键字的其他元素,而普通的 javascript 也成功地操作了没有关键字的 HTML 元素。

于 2020-12-01T16:14:13.140 回答