将Javascript转换为PHP回显以插入PHP条件语句

时间:2016-09-21 20:35:31

标签: javascript php

我遇到过一些需要从PHP函数添加条件语句到javascript项的情况。

以下是一个示例代码:

    <script type="text/javascript">
$(window).bind("load", function() {
$("div.mejs-button.mejs-playpause-button.mejs-play > button").trigger('click');
});
    </script>

我需要将其包装在一个条件语句中:

if (bp_current_user_can( 'bp_moderate' ) || $loggedinuserid == $userid ) {
//conditional statement for above javascript
}

我想了一会儿,最终偶然发现了一个在线脚本转换器&#39;将javascript转换为php回声的网站。所以现在我的代码如下:

<?php
if (bp_current_user_can( 'bp_moderate' ) || $loggedinuserid == $userid ) {
echo "    <script type=\"text/javascript\">\n"; 
echo "$(window).bind(\"load\", function() {\n"; 
echo "   $(\"div.mejs-button.mejs-playpause-button.mejs-play >  button\").trigger('click');\n"; 
echo "});\n"; 
echo "</script>\n";
}
?>

这也是我想要的,但它看起来相当混乱 - 特别是当我尝试用更大的javascript代码应用它时,如果我想稍后编辑javascript代码。这是我在javascript中包装PHP条件语句的唯一选择吗?

3 个答案:

答案 0 :(得分:1)

你可以这样做:

<?php if (bp_current_user_can( 'bp_moderate' ) || $loggedinuserid == $userid ):?>
<script type="text/javascript">
   $(window).bind("load", function() {
   $("div.mejs-button.mejs-playpause-button.mejs-play > button").trigger('click');
   });
</script>
<?php endif; ?>

答案 1 :(得分:1)

退出PHP模式并直接输出你的js ..

<?php
if (bp_current_user_can( 'bp_moderate' ) || $loggedinuserid == $userid ) { 
//exit PHP to output pure HTML or JS
?>
<script type="text/javascript">
$(window).bind("load", function() {
$("div.mejs-button.mejs-playpause-button.mejs-play >
 button").trigger('click');
});
</script>
<?php } // back into PHP mode for closing curly

答案 2 :(得分:0)

在PHP中嵌入脚本的另一个选择是使用heredoc,看起来像这样......

$scripts = <<<CODE
<script type="text/javascript">
$(window).bind("load", function() {
$("div.mejs-button.mejs-playpause-button.mejs-play >
 button").trigger('click');
});
</script>
CODE;

然后你可以回显变量。 if(something()) echo $scripts;

请注意,您必须将结束CODE;对准保证金。如果你之前有空格,它将打破heredoc。

..然而anotehr的方法是使用输出缓冲区

ob_start();
?>
<script type="text/javascript">
$(window).bind("load", function() {
$("div.mejs-button.mejs-playpause-button.mejs-play >
 button").trigger('click');
});
</script>
?>
$scripts = ob_get_clean();

然后以同样的方式回复它。if(something()) echo $scripts;