javascript函数在php echo中工作吗?

时间:2012-08-16 20:39:58

标签: php javascript html

我正在清理我的代码,以便更加统一。我在echo命令中放了几个javascript函数。我很惊讶地发现,在我完成之后,功能不再有效。我没有收到任何错误,只有当我浏览页面时才发现我的功能不再有效。我仍然处于我的javascript状态,所以我不确定这是否是一个常见的错误,但我找不到与之相关的任何内容。

我通过取走所有回声并慢慢加入更多问题直到问题重新出现,让我陷入第三线。所以,我不确定我做错了什么。

这些功能的目的是对所有内容进行灰色叠加,然后会弹出一个小确认框,询问您是否要继续执行该任务。

echo '<script type="text/javascript">';
                echo 'function showPopUp(el) {';
                    echo 'var cvr = document.getElementById("cover")';
                    echo 'var dlg = document.getElementById(el)';
                    echo 'cvr.style.display = "block"';
                    echo 'dlg.style.display = "block"';
                    echo 'if (document.body.style.overflow = "hidden") {';
                        echo 'cvr.style.width = "100%"';
                        echo 'cvr.style.height = "100%"';
                    echo '}';
                echo '}';
                echo 'function closePopUp(el) {';
                    echo 'var cvr = document.getElementById("cover")';
                    echo 'var dlg = document.getElementById(el)';
                    echo 'cvr.style.display = "none"';
                    echo 'dlg.style.display = "none"';
                    echo 'document.body.style.overflowY = ""';
                echo '}';
echo '</script>';

额外信息:整个页面都在php标签内,我发现另一个不相关的函数表现方式相同。两者相似的唯一方法是它们都使用var命令,它们都是函数。这可能是源头吗?

3 个答案:

答案 0 :(得分:6)

<强> OH。 MY。 GOD。

贵公司的标准是否“允许”以下内容?

echo <<<HTML
<script type="text/javascript">
    function showPopUp(el) {
        var cvr = document.getElementById("cover")
        var dlg = document.getElementById(el)
        cvr.style.display = "block"
        dlg.style.display = "block"
        if (document.body.style.overflow = "hidden") {
            cvr.style.width = "100%"
            cvr.style.height = "100%"
        }
    }
    function closePopUp(el) {
        var cvr = document.getElementById("cover")
        var dlg = document.getElementById(el)
        cvr.style.display = "none"
        dlg.style.display = "none"
        document.body.style.overflowY = ""
    }
</script>
HTML;

或者只是:

<?php
// some PHP code
?>
<script type="text/javascript">
    function showPopUp(el) {
        var cvr = document.getElementById("cover")
        var dlg = document.getElementById(el)
        cvr.style.display = "block"
        dlg.style.display = "block"
        if (document.body.style.overflow = "hidden") {
            cvr.style.width = "100%"
            cvr.style.height = "100%"
        }
    }
    function closePopUp(el) {
        var cvr = document.getElementById("cover")
        var dlg = document.getElementById(el)
        cvr.style.display = "none"
        dlg.style.display = "none"
        document.body.style.overflowY = ""
    }
</script>
<?php 
//some MORE PHP code...

因为如果是,您会注意到您在if声明中使用了作业:

if (document.body.style.overflow = "hidden")

应该是

if (document.body.style.overflow == "hidden")

注意:您的工作方式是在一行上打印 整个 javascript块。如果必须以这种方式打印出来,则必须在必要时为每个打印的字符串添加分号或换行符。

答案 1 :(得分:2)

生成的JavaScript在语法上是不正确的 - 这些行既不以分号也不以换行符终止。替换为

echo 'var cvr = document.getElementById("cover");';

等等。

另外,我含糊地回忆起<script>元素结束后需要换行符。在PHP中,echo最后不会产生换行符,单引号中的字符串不允许转义序列,如\ n。所以你需要这样做:

echo '<script type="text/javascript">'."\n";

答案 2 :(得分:1)

echo语句的问题是缺少空格/分号:

echo 'var cvr = document.getElementById("cover")';
                echo 'var dlg = document.getElementById(el)';
                echo 'cvr.style.display = "block"';

在html中显示为:

var cvr = document.getElementById("cover")var dlg = document.getElementById(el)cvr.style.display = "block"

这在javascript中没有意义。