如何浏览媒体播放器主题上的下一个和上一个消息按钮?

时间:2013-04-21 05:31:37

标签: php javascript jquery jquery-ui navigation

编辑:由于版权问题,问题的主体已被隐藏。

1 个答案:

答案 0 :(得分:1)

好的,评论中的讨论提供了应该出现在问题中的其他信息。有了这些额外的信息,答案是可能的:

您必须确保消息存在于html标记中,否则您无法通过js直接显示它们。请记住,php仅在请求后执行一次。如果您只将第一条消息嵌入到html标记中,那么剩下的就是丢失。因此,要么您必须稍后获取它们,要么必须在html标记中嵌入所有消息。嵌入所有邮件更容易,但您无法访问在页面加载后写入的较新邮件。

像这样更改html脚本的底部以嵌入所有消息,而不仅仅是第一个消息:

<div class="flash_text">
    <input type="hidden" id="mg_msg_key" value="0">
    <?php 
        foreach ($player_msg as $key=>$val)
            sprintf('<marquee scrollamount="1" id="mq_msg_%s" class="%s">&diams;%s</marquee>'."\n", 
                    $key, (0==$key)?'':'mg_msg_hidden', htmlspecialchars($val) );
    ?>
</div>

请注意,还有一个隐藏的输入字段,其中包含当前可见消息的键。此外,除第一个消息之外的所有消息都有一个额外的css类mg_msg_hidden。您现在可以在css级别上使用该类,通过添加到您的css规则集来隐藏除第一个之外的所有消息:

.mg_msg_hidden{
    display: none;
}

只有第一条消息才会显示,其余信息都存在(检查html标记!)但不可见。这是您现在可以使用js来控制单个消息的可见性的起点。将您的js更改为以下内容:

<script language="javascript">
    function showMessage(key){
        $('html div.flash_text marquee').addClass('mg_msg_hidden');
        $('html div.flash_text marquee#mq_msg_'+key).removeClass('mg_msg_hidden');
    }
    function nextMessage(){
        var key='html div.flash_text input#mg_msg_key';
        $(key).val($(key).val()+1);
        showMessage($(key).val());
    }
    function previousMessage(){
        var key='html div.flash_text input#mg_msg_key';
        $(key).val($(key).val()-1);
        showMessage($(key).val());
    }
</script>

这显然只是你的起点。我没有测试过这些行,但是是用它们写的。它们可能包含语法错误等。您必须根据需要调整和扩展方法。

我还使用JQuery表示法以更方便的方式访问元素。您应该考虑在项目中使用这样的js库:当脚本变得更复杂时,它会为您节省很多麻烦。