2013-04-21 70 views
0

編輯:由於版權,問題的主體已被隱藏。如何瀏覽媒體播放器主題上的下一個和上一個消息按鈕?

+0

不確定,使用「媒體播放器按鈕」,是否指鍵盤上標有「播放」,「倒帶」,「停止」等按鈕?如果是這樣的話:在Web應用程序中無法以可靠的方式完成這些操作,因爲這些鍵在每個鍵盤和每個操作系統上都有不同的映射。您可以在html標記級別標記輸入元素的「鍵盤快捷方式」,並在js中評估結果事件,但是如上所述:這對於_special_鍵是不可靠的。 – arkascha 2013-04-21 05:39:52

+0

不是我寫的東西的答案:所以我猜你不是指鍵盤按鈕? – arkascha 2013-04-21 05:50:15

+0

是的,你是對的。我不是指鍵盤按鈕。 – sana 2013-04-21 05:51:55

回答

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庫:當你的腳本變得更復雜時,它會爲你節省很多麻煩。

+0

這不起作用,我使用了相同的代碼。我也嘗試用編碼問題上面提到的代碼實現jQuery方法。但是面臨一些問題。如果你有幫助,我將不勝感激。 – sana 2013-04-27 15:50:32

+0

嗯,「不起作用」並不是真的很有幫助......這是什麼意思,發生了什麼,不是什麼?你在控制檯中得到什麼錯誤信息?有一件事讓我一看到編輯後的問題:你在「flash播放器」部分''class =「pl_msg_id_ 」'的構造不能工作,它是無效的,你可能是這樣的'class =「pl_msg_id_ <?echo sprintf('',$ p;?>「'同樣是第二次進入同一行。您應該通過查看生成的html標記(瀏覽器中的」查看頁面源代碼「 ) – arkascha 2013-04-28 06:12:29

+0

另外,你現在寫的是你正在使用jQuery庫,你會注意到這個庫被加載到頁面的頂部嗎?你必須要加載它,否則你不能使用它。在你的瀏覽器的調試控制檯中得到的錯誤消息沒有辦法用你的網站進行調試 – arkascha 2013-04-28 06:18:52

相關問題