Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP在浏览器中有条件地呈现Javascript函数调用_Javascript_Php_If Statement - Fatal编程技术网

使用PHP在浏览器中有条件地呈现Javascript函数调用

使用PHP在浏览器中有条件地呈现Javascript函数调用,javascript,php,if-statement,Javascript,Php,If Statement,我有一个按钮,可以在点击时成功触发“加载更多”。单击后,将设置一个会话变量,这样当用户重新加载页面时,新帖子应该显示为已加载,因此用户无需再次单击“加载更多” 因此,我希望根据是否设置了会话或COOKIE,在PHP IF语句中呈现相同的“加载更多”Javascript函数: <?php if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))){ echo '<script>loadmore(\'po

我有一个按钮,可以在点击时成功触发“加载更多”。单击后,将设置一个会话变量,这样当用户重新加载页面时,新帖子应该显示为已加载,因此用户无需再次单击“加载更多”

因此,我希望根据是否设置了会话或COOKIE,在PHP IF语句中呈现相同的“加载更多”Javascript函数:

<?php
if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))){
echo '<script>loadmore(\'posts\');</script>';
}
else {
echo '<a href="#" onClick="return false" onmousedown="javascript:loadmore(\'posts\');" class="btn btn-primary" id="load-more-btn">Load More</a>';
}
?>


但是,页面呈现后不会触发Javascript。我做错了什么?

要让JavaScript自动运行,可以使用


...
或许

<body onload="conditionally_loadmore('posts')">
<?php
if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))){

    // Only have the function do something if we really want to.
    echo '<script>function conditionally_loadmore(s) {';
    echo ' loadmore(s); ';
    echo '}</script>';
}
else {

    echo '<script>function conditionally_loadmore(s) {';
    echo ' // Do nothing. ';
    echo '}</script>';

    echo '<a href="#" onClick="return false" onmousedown="javascript:loadmore(\'posts\');" class="btn btn-primary" id="load-more-btn">Load More</a>';
}
?>

或者,正如@Astaroth所建议的:

<body
    <?php
      if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))) {
        echo 'onload="loadmore(\'posts\')"';
      }
    ?>
>...

正如@Austin和@Angry Coder所说的,检查您的控制台是否有错误

另外,确保在调用函数之前定义了函数
loadmore()
。因此,要么将函数声明置于
loadmore('posts')之上
onload
或类似的情况下调用或添加调用

另一件事,为了清晰起见,您可以编写如下代码(但这是一种观点):


loadmore(“posts”);

与此代码段相关的
loadmore
函数定义在哪里?在尝试调用它之前,应该先定义它。检查浏览器控制台是否有错误。能否添加代码的javascript部分谢谢@Austin,事实上,我的javascript是在文档末尾加载的,这就是它无法工作的原因!不是重复的问题,只是标题有点误导我想这是OP需要的,只是澄清一下他应该添加类似
onload=“loadmore('posts')”
,以便在满足“cookie条件”时插入onload。以防OP看不到谁应用你的答案。
<body
    <?php
      if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))) {
        echo 'onload="loadmore(\'posts\')"';
      }
    ?>
>...
<?php  if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))) { ?>
        <script>loadmore('posts');</script>
<?php } else { ?>
        <a href="#" onClick="return false" onmousedown="javascript:loadmore('posts');" class="btn btn-primary" id="load-more-btn">Load More</a>
 <?php } ?>