我遇到过一些需要从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条件语句的唯一选择吗?
答案 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;